max-http-header-size 設置引發的問題


Tomcat報Error parsing HTTP request header

今天前端上傳圖片,需要通過js裁剪,最終把一張圖片轉成了Base64編碼字符串,提交的時候 拋了 Error parsing HTTP request header

通過debug調試發現是Tomcat的header緩沖區大小不夠

1.只需要在server.xml中增加maxHttpHeaderSize字段即可:

<Connector URIEncoding="UTF-8" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
	useBodyEncodingForURI="false"
	enableLookups="false"
               connectionTimeout="20000"
               redirectPort="8443" maxHttpHeaderSize="3145728"/>

2.springboot的方式

#設置http參數限制
server.tomcat.max-http-header-size=3145728

http post Request header is too large 開發環境和線上版本解決方案

 java.lang.IllegalArgumentException: Request header is too large,請求頭超過了tomcat的限值。本來post請求是沒有參數大小限制,但是服務器有自己的默認大小。

eclipse開發環境解決 在/Servers/Tomcat v8.5 Server at localhost-config/server.xml的Connector 中加入maxHttpHeaderSize =“102400”

如下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" maxHttpHeaderSize ="102400" redirectPort="8443"/>

線上環境解決 在apache-tomcat-8.5.9/conf/server.xml的Connector 中加入maxHttpHeaderSize =“102400”

如下:
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" maxHttpHeaderSize ="102400" redirectPort="8443"/>
 
 
總結:
  tomcat http-header-size過大導致OOM問題( tomcat http-header-size  因為每一次請求都要創建 http11.Http11OutputBuffer對象,不斷占內存 ),【 默認是4096k: 默認值是4KB 】, 如果設置過小報出: Request header is too large,導致post的header存不下來,要根據實際情況進行設置這個值。
 

Tomcat報Error parsing HTTP request header


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM