做项目的时候碰到一个问题,就是Tomcat在处理含有|,{,}的字符的Url时候,发现请求没有到达指定的Controller上面,而在Access_log中写入了get null null 400的错误信息,从网上也翻了几个资料最终确定是tomcat的一个问题(个人觉得也是一个缺陷)
问题的由来
Tomcat根据rfc的规范Url中不能有类似|,{,}等不安全字符串,但在实际的操作中有时为了数据完整性和加密的方式都需要有|,{,}出现,这样的话Tomcat会直接告诉客户端Bad Request.
对于这个问题,很多人也提出很多不同的看法:https://bz.Apache.org/bugzilla/show_bug.cgi?id=60594,经过修改,最终Tomcat把权限开放出来,通过tomcat.util.http.parser.HttpParser. requestTargetAllow这个配置选项,允许不安全字符的出现 。Tomcat详细配置
解决方法
经过几次探索,有以下几个方法能够解决这个问题:
- 把请求的Url进行编码,这个对源头进行处理,来规避这个问题,如果是第三方来调用的url就无能无力 。
- 修改Tomcat的配置文件(Tomcatconfcatalina.properties),适用tomcat 7以上的版本
文章插图
(本文完)
【Tomcat不安全字符的处理】
推荐阅读
- Linux配置mysql,tomcat,Nginx 开机自启动的几个方式
- Tomcat7目录结构简介
- Tomcat基本概念及常用调优方式
- js抽象值操作
- 安全期避孕为何不安全?
- 史上最全的字符串格式化方法,学这些就够用了
- Java程序员必备——Tomcat配置技巧Top10
- Python超详细的字符串用法大全
- 详解Oracle数据库之字节序和字符集
- 轮胎上的各种字符都表示什么意思,家用车的轮胎又该如何选择呢?