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存不下来,要根据实际情况进行设置这个值。