tomcat The valid characters are defined in RFC 7230 and RFC 3986

1.情景展示

  当你使用浏览器进行问号传参与后台进行交互时,会报这个异常。 

  tomcat控制台报错信息如下:

  The valid characters are defined in RFC 7230 and RFC 3986

2.原因分析

  这个问题是高版本tomcat中的新特性:就是严格按照 RFC 3986规范进行访问解析,

  而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符

  以及所有保留字符(RFC3986中指定了以下字符为保留字符:! * ’ ( ) ; : @ & = + $ , / ? # [ ]);

  换句话说,?问号传参后面的字符超过了这个范围,就会出现这个异常。

  出现这个异常,需要满足3个条件:

  第一:tomcat7.0.73以上;

  第二:ie浏览器;

  第三:get传参,参数值带有中文或者带有双引号。

3.解决方案

  方式一:使用encodeURI()函数对中文参数值进行编码(1次不行,就用2次);

  方式二:将get传参改为post传参;

  方式三:修改catalina.properties;

  找到{TOMCAT_HOME}/conf/catalina.properties中,找到最后注释掉的一行 #tomcat.util.http.parser.HttpParser.requestTargetAllow=|  ,改成tomcat.util.http.parser.HttpParser.requestTargetAllow=|这后面加上要增加的字符。

  方式四:降低tomcat版本。

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

 

posted @ 2019-04-26 17:33  Marydon  阅读(598)  评论(0编辑  收藏  举报