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