Tomcat竟然有bug,这我能信?
虽然看上去跟我们的问题是一样的,都是400问题,但是具体发生的原因是不一样的。这个issue是说,如果domain name .ext 包含数字,比如 "domain.sf1m",会出现400问题。这个问题也已经在tomcat的新版本中修复了。 但是即使我使用最新的8.5.x版本的tomcat,用带有下划线的Host的http去请求tomcat的时候依然会报400错误。 也就是说,带有下划线的Host的http请求,tomcat认为是有问题的。 那为什么之前版本的tomcat是正常的呢?带着这个疑问我们来分析一下tomcat的源代码。 由于之前没有看过tomcat的源代码,所以要分析出到底是哪一行代码有问题是很困难的,所以我查看了下tomcat的相关的bug https://bz.apache.org/bugzilla/show_bug.cgi?id=62371 下面是bug中的错误stack。 发现对应的代码改动如下: ![]() 到这里我们也就知道了处理Host头部的类就是这个HttpParser类。 然后我在本次check了下tomcat8.5.31 和8.5.11的代码,比对了一下HttpParser以及AbstractProcessor类。 对比结果如下: (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |