tomcat Note: further occurrences of HTTP header parsing errors will be logged at DEBUG

Tomcat出現這個異常:

20-May-2020 09:53:35.732 INFO [http-nio-8080-exec-7] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
	java.lang.IllegalArgumentException: Invalid character found in the HTTP protocol
		at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:570)
		at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:502)
		at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
		at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818)
		at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1627)
		at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
		at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
		at java.lang.Thread.run(Thread.java:748)

出現這個,顧名思義就是 解析header的時候,出錯。
 

其實出現這種情況歸根結底原因還是因爲接口的問題,不過在不改動代碼的情況下,

可以嘗試,tomcat的server.xml中配置(添加maxHttpHeaderSize):

    <Connector port="8080" protocol="HTTP/1.1"
			   maxHttpHeaderSize="8192" 
                           connectionTimeout="20000"
			   maxThreads="150"
			   maxSpareThreads="75"
               redirectPort="8443" />

如果加了還是一直出現錯誤,那麼就得看對應的接口了,特別是Get方式的接口,着重看傳輸的參數是不是包含了

一些特殊符號沒有進行URL轉移,例如涉及:{ } 這種特殊符號。

這種情形,可以嘗試在 tomcat的catalina.properties的最後一行改爲:

tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}

 

如果你改了這個還是照樣出錯,  那麼我建議從咱們的接口入手,雖然其實報這個錯誤,並不影響接口的使用。

但是如果想避免,可以嘗試把這類Get方式的接口,改成Post方式,這樣就可以有效避免這些過長的參數以及特殊符號參數,

通過post放入到body裏面去傳遞。

 

 

 

最後,如果你按照上面的方法都進行了排查都沒得到解決,這時候再看一眼服務器的tomcat的版本,和你打包時用的tomcat的版本,保持版本一直再試試。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章