Tomcat升级版本出现400问题
Posted 格格巫 MMQ!!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat升级版本出现400问题相关的知识,希望对你有一定的参考价值。
以往久远项目经过安全扫描后,发现tomcat版本问题有很多安全问题,故同大版本升级了tomcat小版本版本。但是升上去的tomcat,发现有些页面出现400错误。
经过排查发现tomcat在升级的时候,增加了新的特性性
1) URL参数包含大括号报错
由于Tomcat的新版本中增加了一个新特性,就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ])。
2) URL参数包含#报错
根据rfc规范,url中不允许有 |,,等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码
解决方法
按正规编写前端代码,涉及到中文,特殊字符,且需要放到url上面的,请使用encodeURIComponent或encodeURI对URL进行编码。
以上是关于Tomcat升级版本出现400问题的主要内容,如果未能解决你的问题,请参考以下文章
springboot 1.3.5升级1.5.9后 默认使用tomcat 8.5版本 get请求报400 异常信息为 The valid characters are defined in RFC 72