今天postman测试接口时, 参数是一个base的串,后台死活是验签不过。但是我直接代码运行验签是可以的。 一步步排查才发现前台传的base64和后台接收的不一样!
前台的+号在后台显示成了空格:
前台的:
后台接收到的:
解决办法:
- 通过后台解决: 用String.replaceAll(" ","+"); 手动将空格转回+号 不太推荐
- 前台通过表单的方式提交参数, 请求头改成:application/x-www-form-urlencoded 表单提交前台会把一些特殊字符转成转义字符 + => %2 ,这样后台在解析的时候就能读到+号了
记录一个网络传输的坑。排查了一个小时。。😓