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进行编码。

猜你喜欢

转载自blog.csdn.net/weixin_43214644/article/details/125857579