关于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错误解决

在本地测试是没有问题的,然后发布到服务器运行没多久就会报下面的错误。

java.lang.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokens  
    at org.apache.coyote.http11.InternalAprInputBuffer.parseRequestLine(InternalAprInputBuffer.java:182)  
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1000)  
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)  
    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)

在网上找了一些资料都说要在server.xml中加上maxHttpHeaderSize="8192"也就是如下面代码所示:

<Connector port="80" URIEncoding="utf-8" protocol="HTTP/1.1"  connectionTimeout="20000"  redirectPort="8443" maxPostSize="-1" maxHttpHeaderSize="8192" maxThreads="150" maxSpareThreads="75"/>

我以为这样就大功告成了,可以在运行一短时间后又报错了。

最后才发现请求地址有的是https的,这样在代码里把请求地址做一下过滤就好了。


(5)