我以前从未使用过Tomcat,但我最近继承了一个JSP项目,现在我需要让它运行起来。我已经设法在Eclipse中本地安装了Tomcat8.0,一切工作正常。我还在Ubuntu VPS上安装了Tomcat8.0。这个应用程序运行得很好,除了它如何处理URL的一个小问题。
客户端应用程序生成参数中带有未转义方括号和花括号的URL,如下所示:
GET /saveItems.json?items=[{%22json%22:%22here%22}]尽管我很想更改客户端应用程序,但我不能。我只需要让这个后端运行起来。
我的本地应用程序副本可以很好地处理这个问题。然而,在服务器上,我得到了这个错误:
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.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:286)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1504)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1460)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)我一直在寻找一个可能会影响这一点的设置,但没有任何运气。这里我漏掉了什么?
发布于 2018-08-03 20:01:31
当我尝试使用一些特殊字符进行GET URL时,我得到了这个错误。
java.lang.IllegalArgumentException:在请求目标中发现无效字符。
通过更改server.xml中的连接器参数,我们可以解析Tomcat9版中的特殊字符。
Connector port="80" protocol="HTTP/1.1" relaxedQueryChars="\ { } |" https://stackoverflow.com/questions/44011774
复制相似问题