2020-08-06

请求报错:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

请求报错

http://127.0.0.1:8080/driverApp/findLikeAddress?json={“shopname”:“广东省”,“uid”:1001}
在这里插入图片描述

04-Aug-2020 12:03:09.642 信息 [http-nio-8080-exec-8] org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误
 Note: further occurrences of HTTP request 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
        at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:483)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:502)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1623)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)

问题

Tomcat抛出异常,导致400 –错误请求。
从7.0.88开始,大多数tomcat版本都会出现此问题。

解决方案

由Apache团队建议:
Tomcat增强了其安全性,并且不再允许在查询字符串中使用原始方括号。在请求中,我们有{,} 或其他符号,因此服务器未处理该请求。

在tomcat conf路径下的server.xml文件里面的 Connector 标签下添加属性 relaxedQueryChars:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               maxHttpHeaderSize ="10240" 
               relaxedQueryChars="{,}"/>

如果应用程序需要默认情况下tomcat不支持的更多特殊字符,请在relaxedQueryChars上述属性中添加这些特殊字符,并以逗号分隔。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值