解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF

通过这里的回答,我们可以知道:

Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。

具体来说,就是添加了些规则去限制HTTP头的规范性

参考这里

具体来说:

org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target

if(IS_CONTROL[i] || 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[i] = true;
            }

转换过来就是以下字符(对应10进制ASCII看):

  • 键盘上那些控制键:(<32或者=127)
  • 非英文字符(>127)
  • 空格(32)
  • 双引号(34)
  • #(35)
  • <(60)
  • >(62)
  • 反斜杠(92)
  • ^(94)
  • TAB上面那个键,我也不晓得嫩个读(96)
  • {(123)
  • }(124)

   |(125)

  解决办法1:

  还是参考这里

  即:

  配置tomcat的catalina.properties

  添加或者修改:

  tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

  这种方法只适合对应的应为,如果为中文则就不行。如果有?和&这些符合那么

  tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}?&

  解决办法2:

  最轻便的方法,更换tomcat版本。此方法比较快

  解决办法3:

  对相应的参数进行编码,就是将所有的参数都进行编码

  解决方法4:

  选择另外的参数传递方法,比如post或者localStorage。

  本人采用的是直接更换tomcat版本,应为参数中包含中文,代码已经写好。不想修改,就直接还tomcat。当然,这种问题在Google浏览器中未发现,基本都是IE浏览器中出现。

  需要更换那些版本的tomcat,可以直接下载对应的版本的tomcat

  http://archive.apache.org/dist/tomcat/tomcat-6/

  http://archive.apache.org/dist/tomcat/tomcat-7/

  http://archive.apache.org/dist/tomcat/tomcat-8/

  http://archive.apache.org/dist/tomcat/tomcat-9/

?

转载自https://www.cnblogs.com/lr393993507/p/7755867.html

原文地址:https://www.cnblogs.com/diandianquanquan/p/10607059.html

时间: 2024-10-05 13:12:37

解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF的相关文章

解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 问题

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证. 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i

异常解决:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

前言: 在用IE浏览器时访问tomcat项目时,页面报400错误,后台错误: java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986 在网上查得资料时因为Tomcat版本在7以后会对http请求进行验证 解决办法: 1.使用encodeURI函数,因为IE浏览器无法对URL

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC

通过这里的回答,我们可以知道: Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证. 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i

【问题】Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 问题

具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i == 35 || i == 60 || i == 62 || i == 92 || i == 94 || i == 96 ||

Invalid character found in the request target.The valid characters are defined in RFC 7230 and RFC3986

Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证. 具体来说,就是添加了些规则去限制HTTP头的规范性 参考这里 具体来说: org.apache.tomcat.util.http.parser.HttpParser#IS_NOT_REQUEST_TARGET[]中定义了一堆not request target if(IS_CONTROL[i] || i > 127 || i == 32 || i == 34 || i == 35 || i == 6

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

微信小程序前后台使用get方式传参时报错如图.但在微信开发平台和苹果测试都没事,在安卓手机上就报这个错,猜想原因是get传递了汉字的原因. 尝试了下在后台输出从前台获取的参数,但是后台什么也没有获取到,直接报错. 最后用id替换了url里的中文:因为搜索功能不能替换中文的,改成了post请求. 参考:[Java EE]get和post请求的编码过程get请求中文参数乱码的解决之道 网上也有很多报这个错的原因是含有特殊字符:有些版本的Tomcat严格按照 RFC 3986规范进行访问解析,而 RF

异常:Invalid character found in the request target. The valid characters are defined in RFC 3986

一.背景 事情是这样的,前几天做一个基本的数据库“增删改查”的需求,前端传参的方式是“JSON字符串”,后端接收到此参数后,使用阿里巴巴fastjson进行解析,然后入库.需求很简单吧,但是偏偏遇到问题了. 我发现,JSON字符串里面无数组,纯粹的都是json结构的时候,即都是“{}”时,不会报错,传参入库没问题.但是只要传参的值里面有数组,即有“[]”的结构时,就报错.报错内容如下(我的tomcat版本是8.5.45): java.lang.IllegalArgumentException:

Tomcat 8 Invalid character found in the request target. The valid characters are defined in RFC 3986

终极解决方案: Invalid character found in the request target. The valid characters are defined in RFC 3986 25-Aug-2018 11:27:27.086 信息 [http-nio-8087-exec-5] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header Note: further oc

java.lang.IllegalArgumentException: Invalid character found in the request target.

http参数存在特殊字符: 特殊字符是出现在后面跟的参数中,对参数进行 URL 编码,可以使用 JavaScript 中的 encodeURIComponent() 函数. 原文地址:https://www.cnblogs.com/YuyuanNo1/p/9717274.html