tomcat自动URLDecode解码问题(+号变空格)
最近项目中出现一个问题,就是前段调后端接口,参数带+号,传到后端后+号自动URLDecode成空格了。
1.问题排查
条件:tomcat配置server.xml有URIEncoding="UTF-8"
1.1get请求、post请求(参数跟在URL的后面),request.getParameter("token")中token会被自动URLDecode。而request.getQueryString()获得的值则是浏览器传的原值。
如果有中文,浏览器会自动转义,谷歌浏览器在view source上可以看到浏览器往后端传之前的参数值。
1.2post请求(参数在body里面),request.getQueryString()值为空, request.getParameter("token")中token不会被自动URLDecode,而且中文乱码。
加上
request.setCharacterEncoding("UTF-8");
后,中文不乱码,但是token也不会自动URLDecode。
1.3去掉tomcat配置的URIEncoding="UTF-8",在1.1情况下token参数也会被自动URLDecode,此时采用tomcat默认的编码方式。
2.深入tomcat解析
3.临时解决方案
1.如果发现+号编码了,那么解码一下
2.如果发现uss有空格,说明+号被URLDecode成空格,那么URLEncode一下就变成原来的值
// 1.如果发现+号编码了,那么解码一下
if (uss.contains("%2b") || uss.contains("%2B")) {
uss = URLDecoder.decode(uss, "UTF-8");
}
// 2.如果发现uss有空格,说明+号被URLDecode成空格,那么URLEncode一下就变成原来的值
if (uss.contains(" ")) {
uss = URLEncoder.encode(uss, "UTF-8");
}
参考博客:
https://blog.csdn.net/vickyway/article/details/46375971
https://muchstudy.com/2017/12/06/字符解码时加号解码为空格问题探究/
tomcat自动URLDecode解码问题(+号变空格)的更多相关文章
- 对于querystring取值时候发生+号变空格的问题
今天遇到这个问题,在网上找了几个答案,解决了问题,很高兴,所以贴出来给大家分享一下: URL如下 http://127.0.0.1/test/test.aspx?sql= and id='300+' ...
- base64码通过http传输 +号变 空格 问题解决
通过七牛云base64上传图片,通过官方示例上传成功后,根据示例改了一个controller. 通过前端往后端传base64码形式进行测试.死活不通过,七牛报400. 仔细排查后发现,示例转换的bas ...
- base64码通过http传输 +号变 空格 以及 图片编码后字符串较长导致POST提交失败 问题解决
场景:图片上传OSS存储,接口拿字符串去接前端传的base64码,服务器打印入参传的值,发现和前端打印的值有所区别,服务器中打印的值所有+号全部变成空格. 解决办法: Java中使用:url = ur ...
- 加号变空格问题 url参数 post get 请求发送
问题:加号后台接收变空格问题 结论: 1.任何get拼接的请求 参数key value 需要编码后在拼接 2.get请求避免做数据提交,用post提交.jq,axios的post提交默认编码了不会有问 ...
- 实用脚本----Linux下Jdk和Tomcat自动安装shell脚本总结
系统环境为:ubuntu 14.04 一.JDK 自动安装脚本 jdk自动安装bash shell脚本,截止今天(2014/10/15)亲测可用: sudo su #切换到root权限 mkdir / ...
- 解决url传递过程中加号变空格的问题
url传递过程中加号变空格 在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格. 如11+22接收后变成11 22. 要解决这个问题,需要将加号替换为%2B进行传递. 如11%2 ...
- 解决url传递过程中加号变空格的问题<转>
url传递过程中加号变空格在接收url参数的过程中,会发现如果参数中存在‘+’号,接收后会变成空格. 如11+22接收后变成11 22.要解决这个问题,需要将加号替换为%2B进行传递. 如11%2B2 ...
- 关于不重启Tomcat自动加载改变的class文件
修改server.xml,在Host标签下加入以下配置 <Context path="" docBase="FileManager" reloadable ...
- Http请求特殊符号变空格
Http请求特殊符号变空格 今天在调试客户端向服务器传递参数时,url中的参数值出现+,空格,/,?,%,#,&等特殊符号的时候就自动变成空格,在服务器端无法获得正确的参数值.解决方法如下: ...
随机推荐
- javafx progressbar
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans ...
- janos.io
http://janos.io/ https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Porting
- Kinect 开发 —— 姿势识别
姿势和手势通常会混淆,但是他们是两个不同的概念.当一个人摆一个姿势时,他会保持身体的位置和样子一段时间.但是手势包含有动作,例如用户通过手势在触摸屏上,放大图片等操作. 通常,游戏者很容易模仿指定姿势 ...
- 体验 Windows 系统 CVM
添加角色功能: service.msc 设置自动服务,net start telnet
- 阿里云 django的一次web维护记录
首先, 丢给我一个阿里云的server的账号/password,之前没有玩过阿里云,想想应该也是ssh服务来远程登陆. 环境: centos+nginx+uwsgi+python2.7+django. ...
- 10.查看npm安装信息和版本号
转自:http://www.runoob.com/nodejs/nodejs-express-framework.html 你可以使用以下命令来查看所有全局安装的模块: $ npm list -g ├ ...
- DG动态性能视图详解
V$LOG 显示CONTROLFILE记录的LOG FILE信息. 列名 描述 GROUP# 日志组号 THREAD# 日志线程号 SEQUENCE# ...
- 2018/8/21 qbxt测试
2018/8/21 qbxt测试 期望得分:0? 实际得分:0 思路:manacher 会写模板但是不会用 qwq 听了某人的鬼话,直接输出0,然后就gg了 #include <cstdio ...
- ubuntu下useradd与adduser差别,新建用户不再home文件夹下
useradd username不会在/home下建立一个目录username adduser username会在/home下建立一个目录username useradd -m username跟a ...
- 【MySQL集群】——Java程序连接MySQL集群
上篇简介了怎样在Windows环境下建立配置MySQL集群,这里用一个实现注冊功能的小Demo通过jdbc的方式连接到MySQL集群中. 外部程序想要远程连接到mysql集群,还须要做的一个操作就是设 ...