当我尝试使用我的java网络应用中的网址发送GET请求时出现错误:我的本地计算机网址如下所示 http://localhost:8080/test?param1=1|2¶m2=3343434
2017年2月20日下午4:51:19 org.apache.coyote.http11.AbstractHttp11Processor进程 信息:解析HTTP请求标头时出错 注意:将在DEBUG级别记录更多出现的HTTP头解析错误。 java.lang.IllegalArgumentException:在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义 at org.apache.coyote.http11.AbstractNioInputBuffer.parseRequestLine(AbstractNioInputBuffer.java:283) 在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1017) at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:684) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1524) 在org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1480) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source) at org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61) 在java.lang.Thread.run(未知来源)
我想问一下,如果不更改Apache Tomcat版本或更改现有代码,就可以解决此问题。我想知道Apache Tomcat配置文件是否能够禁用或绕过此检查?
答案 0 :(得分:4)
过去的一天,我一直在为此而奋斗。我尝试在tomcat中使用mod_rewrite尝试urlencode'|'在进入但错误仍然存在,因为它在到达重写引擎之前被抛出。所以没有运气。 我找到的唯一两个工作解决方案是:
答案 1 :(得分:3)
自Tomcat 8.5.8起,这不再有用。
请求网址中存在无效字符的安全错误。
请参阅https://bugzilla.redhat.com/show_bug.cgi?id=1397484
将管道编码为%7C