在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义。如何在Tomcat中处理这个异常
时间: 2024-03-18 17:15:48 浏览: 16
这个异常是由于HTTP请求中包含了无效字符导致的。为了在Tomcat中处理这个异常,可以按照以下步骤进行:
1. 打开Tomcat的配置文件server.xml,找到Connector节点(通常在文件末尾),添加属性relaxedPathChars和relaxedQueryChars,如下所示:
```
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
relaxedPathChars='[]|'
relaxedQueryChars='[]|{}^\`"<>'
/>
```
在上面的例子中,relaxedPathChars和relaxedQueryChars分别指定了一些允许的特殊字符,比如中括号、竖线等。这样Tomcat就会放宽对请求中特殊字符的限制。
2. 重启Tomcat服务器。
通过以上两个步骤,就可以在Tomcat中处理请求中包含无效字符的异常了。
相关问题
tomcat7RFC 7230 and RFC3986
根据引用资料和,当将项目从原先的jdk1.6和tomcat6升级为jdk1.8和tomcat7之后,出现了RFC 7230 and RFC 3986错误。这个错误是因为在高版本的tomcat中,会对请求头进行过滤。在使用springboot2.2.5版本和内置的tomcat9.0.31版本的项目中,可以采取以下解决方法:
1. 新增一个Filter,在Filter中对请求头进行解析和过滤,确保请求头中的字符符合RFC 7230和RFC 3986的规范。这是一种推荐的解决方法。
另外,根据引用资料的描述,这种解决方法应该在tomcat7.076、tomcat8.042、tomcat8.512之后的子版本才支持,而tomcat9.022版本不支持。
综上所述,如果您在将项目从tomcat7升级后出现RFC 7230 and RFC 3986错误,可以尝试新增一个Filter对请求头进行解析和过滤,但请注意该解决方法可能在您使用的tomcat版本中不适用。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
Invalid character found in the request target [ ]. The valid characters are defined in RFC 7230 and RFC 3986
Invalid character found in the request target是一个错误消息,表示在请求目标中发现了无效字符。有效字符的定义可以在RFC 7230和RFC 3986中找到。
该错误的原因是由于高版本的Tomcat中的新特性,严格按照RFC 3986规范进行访问解析。RFC 3986规范定义了在URL中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符。保留字符包括! * ’ ( ) ; : @ & = $ , / ? # [ ]。因此,如果在URL中出现了不属于这些保留字符的字符,就会引发Invalid character found in the request target错误。
所以,解决这个问题的方法是确保在URL中不包含无效字符。如果您在URL中传递了一段JSON数据,并且其中有”{“字符,这是不属于RFC 3986中定义的保留字符的。您可以尝试对该字符进行编码或者使用其他方式处理,以确保它不会造成无效字符错误。