出现问题:
发现url拼接多参数时,前端传过来的url的&变成&;了,如下图。导致生成签名时实际是用错误的url生成的签名,就和当前页面url不一致了,就出现问题config:invalid signature
解决:
用encodeURIComponent(uri)前端对url进行编码
例如链接:
http://域名/?channelSource=baidu&shareUserId=6&isMask=1&is_ck=1&shareUserHeadUrl=http://zy-hudian.oss-cn-shenzhen.aliyuncs.com/lease/20211125/c5407d3b39d542598f88413967ddba94.png&shareUserName=%E5%B0%8F%E4%BA%BF%E5%88%9B%E5%AE%A28139
前端编码后是(即后端接收到的参数):
http%3A%2F%2F域名%2F%3FchannelSource%3Dbaidu%26shareUserId%3D6%26isMask%3D1%26is_ck%3D1%26shareUserHeadUrl%3Dhttp%3A%2F%2Fzy-hudian.oss-cn-shenzhen.aliyuncs.com%2Flease%2F20211125%2Fc5407d3b39d542598f88413967ddba94.png%26shareUserName%3D%25E5%25B0%258F%25E4%25BA%25BF%25E5%2588%259B%25E5%25AE%25A28139
后端对当前接收到的编码的url解码,解码用如下方法:
URLDecoder.decode(url, "UTF-8");
解码后就是当前页面原链接,再去参与生成签名,就解决了。