[神坑已解决]Http请求参数中的加号被转换为空格的问题

问题场景 (着急解决的小伙伴可以直接看场景总结)

String str = Base64Util.getBase64Encode(“小狗”)//调用方使用该方法加密
    得到值小狗的加密编码str:sdfsdf+sdf

前端传参数之前,将参数值加密为sdfsdf+sdf,传递给后端之后,后端tomcat自动将str中的加号变为空格 ->> sdfsdf sdf(🤬🤬🤬这就是后端接收到的参数值param,加号未被识别变成了空格)

Base64Util.getBase64Decoder(param)//后端接口使用该方法解密
    //解密之后得到的值是乱码的,因为他之前加密出来的数据被修改了。(加号变成了空格!!!)

所以我们要将后端解密的时候的值作修改,进而解密得到正确的数据。

加密后的数据 ->> tomcat ->> 解密数据

加密后的数据 ->> 二次加密(为了经过tomcat之后,后端收到的参数就是加密后的编码) ->> tomcat ->> 解密数据

场景总结:你给后端传参,参数里有加号,tomcat会将加号变为空格,导致后端接收入参错误。

解决方法😎:二次加密,%2B转换为空格

 String paramNew = URLEncoder.encode(str, "UTF-8");
 //str是头次加密得到的编码,将其使用URLEncoder进行二次加密

利用tomcat的另外一个属性,会将%2B转换为加号,那我们就将第一次加密后的数据(这个加密编码中是含有加号的)再次使用上述URLEncoder进行加密,加密之后就会将头次加密编码中的加号事先转换为%2B。
请添加图片描述

  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值