今天,我们来讲一下,tomcat 版本过高而引发的7230和3986 的错误 ,这个错误是我更换了浏览器之后所引发的异常错误信息,所以就在这里跟大家讲一下:
一、原因浏览器从谷歌更换成内部浏览器,
图示:
二、引发错误异常信息:Tomcat:The valid characters are defined in RFC 7230 and RFC 3986 (Tomcat: url 包含特殊字符报错问题)
图示:
三、原因解析:
在Tomcat7相对较新的版本中,诸如:7.0.96。以及Tomcat8之后的版本,对URL字符中特殊字符的检查变得更加严格,在URL中如果出现这些特殊字符,Tomcat会直接返回 400 状态码,或者 出现RFC 7230 and RFC3986错误
四:所以
但是URL中,经常会用到 | 等一些特殊字符,经过Tomcat组内部讨论。Tomcat的开发人员增加一项设置,允许配置在URL可以出现的特殊字符,如下图所示:
五:特殊字符情况下,发送请求还会报错呢?
传入的参数中有"{"不在RFC3986中的保留字段中,所以还是会报上面那个错。
六:解决:
1.降低Tomcat版本至7.0.5x版本
2. 修改tomcat配置,修改server.xml文件,添加如下代码:
在connector 加入
relaxedPathChars="<>[]^{|}" relaxedQueryChars="<>[\]^
{|}"
如下代码:
七:此时还有可能会报400错误 ,修改catalina.properties文件,如下:
找到这句话,#tomcat.util.http.parser.HttpParser.requestTargetAllow=|
打开注释
改为: tomcat.util.http.parser.HttpParser.requestTargetAllow=<>[]^`{|}
omcat:URL包含特殊字符报错问题,介绍到此为止,感谢你的浏览,希望对你有所帮助,如有疑问请留言。谢谢