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

tomcat升级 遇到的坑 运行tomcat的时候出现NosuchMethodError

在 Eclipse 中指定了未知版本的 Tomcat

Tomcat版本升级步骤

drools跳转出现错误问题(400)

Tomcat 中 HTTP 400 Bad Request 的常见原因以及示例