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

posted @ 2020-12-30 23:08  逍遥游jJ2EE  阅读(5121)  评论(0编辑  收藏  举报