Spring Boot请求中URL参数的-号丢失

一、概述

今天遇到一个奇怪的问题,Java项目在接收请求时,请求URL参数中的+号会被替换成空格,导致后端在验证签名的时候,由于拿到的参数与前端传输的参数不一致,导致签名验证失败。

二、问题原因

一番研究之下,原来是Spring MVC在接受请求时,会对请求中的URL参数进行URLDecode操作,即解码操作。

如果请求中的参数事先没有进行URLEncode操作,那在被URLDecode操作之后,其中的特殊字符可能会被转换,例如+号。

三、解决办法

综上所述,我们在封装前端请求类时,应该对URL参数键值对中的value进行URL编码操作。

例如这样

// 待请求字符串
key1=xu+jing+zhu&key2=xu jing zhu

// 进行Encode操作后的字符串
key1=xu%2Bjing%2Bzhu&key2=xu%20jing%20zhu

切记,只需要对value值进行编码,key值不需要编码,不然名字不一样,后端就取不到了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值