回答

收藏

[技术方案] Tomcat部署项目出现400语法错误,url处理策略严谨问题解决办法

产品交流 产品交流 1067 人阅读 | 0 人回复 | 2020-08-31

有的时候你会发现使用不同的Tomcat部署项目,在项目测试环境中正常,部署到Tomcat中就出现了400的错误,这个情况就无法理解了。
解决方案:
新出的tomcat的coyote对http头request URL解析更严格了
if ((IS_CONTROL != 0) || (i > 127) || (i == 32) || (i == 34) || (i == 35) || (i == 60) || (i == 62) || (i == 92) || (i == 94) || (i == 96) || (i == 123) || (i == 124) || (i == 125)) {
        IS_NOT_REQUEST_TARGET = true;
}
花括号{} 123和125不能包含在URL中,旧版jar包没有对花括号encode,新版jar已经没有这个问题。
如果不升级jar包,就只能用旧版的tomcat来解决这个问题了。
可用的版本有:
Tomcat 9.0.0.M11及以下
Tomcat 8.5.6及以下
Tomcat 8.0.38及以下
Tomcat 7.0.72及以下
Tomcat 6.0.47及以下

这是一个8.5.5的免安装版:待更新

根据tomcat的Changelog,URL限制使用花括号的版本是:
Tomcat 6.0.48及以上
Tomcat 7.0.73及以上
Tomcat 8.0.39及以上
Tomcat 8.5.7及以上
Tomcat 9.0.0.M12及以上

“锲而舍之,朽木不折;锲而不舍,金石可镂”。滴水可以穿石,不是因为其力量,而是因为其坚韧不拔、锲而不舍。用一丝不苟的心对待每一件事,只有把根基做深,墙才会筑的更高。
用我们的专业和诚信赢得您的信赖,让每一次合作总能超越期待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则