问题描述:
前端测试Get请求访问,path中的参数含有加号,后端过滤器中使用request.getParameter()方法无法获取。
请求地址:http://localhost:8899/bookmark/getByUser?encryData=g3DGtZnczC7SUm+vRvkaYg==
后端过滤器中接收参数如图所示,其中查询字符串是request.getQueryString()方法结果,请求参数是request.getParameter("encryData")结果:
分析步骤:
1、url中存在特殊字符,需要进行编码处理。
url编码值如下:
空格 - %20 ” - %22 # - %23 % - %25 & - %26 ( - %28 ) - %29 + - %2B , - %2C / - %2F : - %3A ; - %3B < - %3C = - %3D > - %3E ? - %3F @ - %40 \ - %5C | - %7C
url特殊字符转义如下:
URL中一些字符的特殊含义,基本编码规则如下: 1、空格换成加号(+) 2、正斜杠(/)分隔目录和子目录 3、问号(?)分隔URL和查询 4、百分号(%)制定特殊字符 5、#号指定书签 6、&号分隔参数
解决方案:
前端使用encodeURIComponent()函数进行转义。
注:
- ApiPost工具调试请求时,处理特殊字符以下两种方法:
- 前端需转义2次;
- 使用工具自带的encodeURUComponent工具转换。
思路:主要参考restTemplate请求原理,发现前端请求url需要进行二次编码后,通过APiPost发送的url在后端接收参数时才可正常接收。即“+” --> “%2B” --> "%252B"。
标签:请求,url,前端,request,空格,接收数据,特殊字符 From: https://www.cnblogs.com/new-bird90/p/17684825.html