解决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 RF
卢磊磊 发表于7个月前
解决Invalid character found in the request target. The valid characters are defined in RFC 7230 and RF
  • 发表于 7个月前
  • 阅读 224
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

tomcat的get请求中出现特殊字符:|,{}等,解决的办法,测试了7.0.73版本,修改catalina.properties,但是并不成功。最后还是使用低版本的,希望有其他方法的同学找到好办法告知。

比较好的解释:

(1)http://blog.cangzhitao.com/post/exception/Invalid-character-found-in-the-request-target.htm

(2)

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

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)

 

 

解决办法:

还是参考这里

即:

配置tomcat的catalina.properties

添加或者修改:

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

 

当然还有另外一种方法,就是将所有的参数都进行编码

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 73
码字总数 15630
×
卢磊磊
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: