信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
1、在查看系统后台日志时,发现异常信息如下:
八月 27, 2018 12:34:52 上午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level. java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens at org.apache.coyote.http11.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.java:181) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:996) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2517) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2506) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
2、在网上查找资料解决方案
因为httpHeaderSize大小不够导致的,要修改tomcat的配置,新加一个字段maxHttpHeaderSize,在tomcat的配置文件server.xml里,对<Connector>元素添加属性 maxHttpHeaderSize="8999",或是需要将method 的属性设置为POST
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" maxHttpHeaderSize="8999" redirectPort="8443" />
maxHttpHeaderSize:HTTP请求和响应头的最大量,以字节为单位,默认值为4096字节。
3、异常原因分析
经过分析,发现此问题与请求参数有关。当在浏览器中访问时 URL中带有特殊字符,如花括号冒号时,就会出现这个错误。例如:http://localhost:8080/index.do?{id:123},在有些情况下,即使没有花括号,只要带有"?+参数"就会报此异常。