问题现象
应用在启动时候向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的这里的代码截图

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

被折叠的 条评论
为什么被折叠?



