应项目所需,使用了若依微服务版,在windows下运行正常,在deepin中运行也正常,但是一发布到华为云的cce里面,就出问题了,页面输入的参数出现了乱码。
下面就解决过程做个记录,供自己和大家参考。
1、问题检测
初步怀疑,可能是接收环境的问题,因为在linux操作系统里面文件名、参数出现乱码这些问题都很常见,但是因为当前使用的若依版本是微服务版,从ui到业务后端,需要经过权限模块、网关、系统服务三道门槛的检验,所以面对的第一个难题时到底码错在哪里了?
于是先使用postman来测定问题出现在哪一步的转码没有成功。
用postman模拟参数,访问主服务,也就是nginx里面访问的那个转接的主服务地址,发现日志里面输出的没有问题,说明主业务服务里面没有乱码的道理。
然后,使用postman访问ui转向的地址。发现乱码了。
所以问题可能在gateway里面。
查看代码,发现在gateway里面,若依用xss检验的时候,需要把原来的请求里面的参数进行转码,防止攻击。代码如下:
private ServerHttpRequestDecorator requestDecorator(ServerWebExchange exchange)
{
ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest())
{