问题场景 (着急解决的小伙伴可以直接看场景总结)
String str = Base64Util.getBase64Encode(“小狗”)//调用方使用该方法加密
得到值小狗的加密编码str:sdfsdf+sdf
前端传参数之前,将参数值加密为sdfsdf+sdf,传递给后端之后,后端tomcat自动将str中的加号变为空格 ->> sdfsdf sdf(🤬🤬🤬这就是后端接收到的参数值param,加号未被识别变成了空格)
Base64Util.getBase64Decoder(param)//后端接口使用该方法解密
//解密之后得到的值是乱码的,因为他之前加密出来的数据被修改了。(加号变成了空格!!!)
所以我们要将后端解密的时候的值作修改,进而解密得到正确的数据。
加密后的数据 ->> tomcat ->> 解密数据
加密后的数据 ->> 二次加密(为了经过tomcat之后,后端收到的参数就是加密后的编码) ->> tomcat ->> 解密数据文章来源:https://www.toymoban.com/news/detail-853389.html
场景总结:你给后端传参,参数里有加号,tomcat会将加号变为空格,导致后端接收入参错误。
解决方法😎:二次加密,%2B转换为空格
String paramNew = URLEncoder.encode(str, "UTF-8");
//str是头次加密得到的编码,将其使用URLEncoder进行二次加密
利用tomcat的另外一个属性,会将%2B转换为加号,那我们就将第一次加密后的数据(这个加密编码中是含有加号的)再次使用上述URLEncoder进行加密,加密之后就会将头次加密编码中的加号事先转换为%2B。
文章来源地址https://www.toymoban.com/news/detail-853389.html
到了这里,关于[神坑已解决]Http请求参数中的加号被转换为空格的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!