问题现象

       应用在启动时候向nacos注册服务的时候报403.具体错误如下所示:

com.alibaba.nacos.api.exception.NacosException: <html><body><h1>Whitelabel Error Page</h1><p>This application has no explicit mapping for /error, so you are seeing this as a fallback.</p><div id='created'>Tue Jun 24 12:16:58 CST 2025</div><div>There was an unexpected error (type=Forbidden, status=403).</div><div>user not found!</div></body></html>
环境说明
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>

这里我使用的config和discover都是2.1.3版本,服务端2.4.3,

nacos服务端开启账号密码登录后:设置的账号nacos,密码1234@nacos

服务启动时候,就是连不上nacos服务器一直返回上面的403错误,确认账号密码无误后,还是不行。

这时我突然想起会不会是版本的问题?

升级版本,解决问题

把上面的两个版本都升级到 2.2.0RELEASE 后,再次重试,好家伙,应用可以注册了,服务起来了,惊不惊喜?

原因

问题是解决就,但是原因还是没搞清楚啊,为什么升级了一个小版本后,服务就可以启动了尼?

遇到问题第一反应当然是面向AI编程了啊?直接问题扔给AI,但是AI总结出来就是确认配置没问题,账号密码没问题,哎。

面向ai无果后怎么办?只能一头扎进nacos源码了啊,经过我七七四十九天的不懈努力,终于在源码里面找到了问题,下面放一张截图,一看便知。

原来是nacos在传递密码的时候使用了 URLEncoder.encode(password, "utf-8") 转义了,好家伙,还记得上面原来的密码么 1234@nacos, @被转义成了%40 ,难怪注册不了了

下面放一张2.2.0的这里的代码截图

没有对密码进行转义,所以有特殊符号也能注册成功。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐