Tomcat|有效字符在RFC 7230和RFC 3986中定义

情况

开发使用tomcat6,发布于tomcat7,跳转报异常页面调整时URL中存在"\"

日志

xxxx-x-xx xx:xx:xx org.apache.coyote.http11.AbstractHttp11Processor process
信息: 解析 HTTP 请求 header 错误注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。
java.lang.IllegalArgumentException: 在请求目标中找到无效字符。有效字符在RFC 7230和RFC 3986中定义
	at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:213)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1108)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:319)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:619)

说明

RFC 3986文档规定:URL必须为规定的84个字符

解决办法

trace=trace.replace("\\","/");替换"\"为"/"

收获
DEV-UAT-PRO 环境保持一致

posted @ 2022-06-17 11:43  燃烧的竹子  阅读(2866)  评论(0编辑  收藏  举报