js调帆软报表时,后台报错java.lang.IllegalArgumentException: Invalid character found in the request target.

报错:

Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.  

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

错误原因:

当在浏览器中访问时 URL中带有特殊字符,如花括号冒号时,就会出现这个错误。

例如:http://localhost:8080/index.do?{id:123}

寻找解决方案

网上查找解决方案,都是说Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。
具体来说,就是添加了些规则去限制HTTP头的规范性。
具体解释可以参考这篇文章(这里谢谢前人的引路哈)
请点击---文章
原因是这个原因,我的请求路径中含有【】,但是网上说的解决方案,我亲身此时我的这个高版本好像并没有用。

这里我就简单总结一下,网上大部分的解决方案有以下的几种

  • 解决方法1
    最轻便的方法,更换tomcat版本。此方法比较快。
  • 解决办法2:
    前端对相应的参数进行编码,就是将所有的参数都进行编码
  • 解决办法3:
    配置tomcat的catalina.properties
    添加或者修改:
    tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

针对方法3,试过无效

寻找解决方案

网上查找解决方案,都是说Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,添加了对于http头的验证。
具体来说,就是添加了些规则去限制HTTP头的规范性。
具体解释可以参考这篇文章(这里谢谢前人的引路哈)
请点击---文章
原因是这个原因,我的请求路径中含有【】,但是网上说的解决方案,我亲身此时我的这个高版本好像并没有用。

这里我就简单总结一下,网上大部分的解决方案有以下的几种

  • 解决方法1
    最轻便的方法,更换tomcat版本。此方法比较快。
  • 解决办法2:
    前端对相应的参数进行编码,就是将所有的参数都进行编码
  • 解决办法3:
    配置tomcat的catalina.properties
    添加或者修改:
    tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

最终解决方案

本人也是方法3在tomcat官方文档中查到线索,官网文档说这个配置已经过时了(题外话:还是要英语学得好,看知识没烦恼,最近准备好好学习学习英语),需要使用Connector中relaxedPathChars和relaxedQueryChars属性可以解决问题。
找到tomcat/conf/server.xml
找到Connector中增加这两个配置,配置如下

<Connector port="8080" protocol="HTTP/1.1"    relaxedPathChars="[]{}|\^" relaxedQueryChars="[]{}|\^" />





 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值