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},在有些情況下,即使沒有花括號,只要帶有"?+參數"就會報此異常。