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存不下來,要根據實際情況進行設置這個值。