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

 

问题背景:

为了应对最近Tomcat重大漏洞的解决问题,tomcat8需要升级至最新tomcat8.5.51才可以修复该漏洞,但是我们系统运行在该版本上,会出现一个路径中有异常字符的报错,报错内容如下:

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

 

出现该问题的原因:

Tomcat在 7.0.73, 8.0.39, 8.5.7 版本后,在http解析时做了严格限制。

RFC3986文档规定,请求的Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。

而我们请求地址中由于路径中有特殊符号,导致在默认的情况下,地址的路径写法违反了RFC3986文档规定,导致出现了上述的报错。

 

解决方法:

方案一:

降低tomcat的版本,将相关的tomcat的版本降低到Tomcat在 7.0.73, 8.0.39, 8.5.7 版本前,就可以避免了这个问题,该方法可以一了百了的解决问题,但是问题是很多老版本的tomcat存在重大漏洞,故在本次任务中该方案并不适用。

 

方案二:

到tomcat的conf目录下,找到server.xml文件,

然后在<Connector>标签中假如两个属性,内容如下:

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443"

               relaxedPathChars="[]^{|}"

               relaxedQueryChars="[]^{|}"

   />

至此,我们启动tomcat后,进入登录界面,点击登录按钮以后,就不会出现“undefined”的报错了,就可以正常的登录了。

 

解决该问题的依据在tomcat的官网上具有相关的说明,如下图:

               该截图对应的官方地址为:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

堂前燕Tornado

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值