zoukankan      html  css  js  c++  java
  • 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版本。

    写在最后

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

     相关推荐:

  • 相关阅读:
    python基础12-语法
    基础篇-内置函数(常用)
    中级篇-内置函数 (map/filter/reduce)
    python 基础11-递归
    python 基础10-函数、变量
    python 基础9-拼接
    redis
    python--os模块
    函数return多个值
    python--文件读写
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/10775589.html
Copyright © 2011-2022 走看看