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

异常信息如下:

2018-11-02 16:28:07.954  INFO 16220 --- [io-18080-exec-1] o.apache.coyote.http11.Http11Processor   : Error parsing HTTP request 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:467) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:294) ~[tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:770) [tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415) [tomcat-embed-core-9.0.12.jar:9.0.12]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.12.jar:9.0.12]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_65]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_65]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.12.jar:9.0.12]
	at java.lang.Thread.run(Thread.java:745) [na:1.8.0_65]

2018-11-02 16:28:08.209  INFO 16220 --- [io-18080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring DispatcherServlet 'dispatcherServlet'
2018-11-02 16:28:08.209  INFO 16220 --- [io-18080-exec-2] o.s.web.servlet.DispatcherServlet        : Initializing Servlet 'dispatcherServlet'
2018-11-02 16:28:08.217  INFO 16220 --- [io-18080-exec-2] o.s.web.servlet.DispatcherServlet        : Completed initialization in 8 ms

浏览器访问参数为:Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC_第1张图片

主要是因为参数中出现了特殊字符。

解决方案为:

1.将特殊字符转义;

2.使用7.0.69以下版本的Tomcat;

3.修改Tomcat的配置文件:

在conf/catalina.properties中最后添加一行:

org.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true

我是采用转义的方式,将请求参数的[]进行转义:

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC_第2张图片

参考资料:

http://tomcat.apache.org/tomcat-8.5-doc/config/systemprops.html

https://blog.csdn.net/zeroso/article/details/70592179/

https://www.cnblogs.com/dygrkf/p/9088370.html

https://blog.csdn.net/xingxiupaioxue/article/details/80363203

你可能感兴趣的:(exception,spring,mvc)