java.lang.IllegalArgumentException: Request header is too large

来源:互联网 发布:ubuntu vim使用教程 编辑:程序博客网 时间:2024/06/06 05:54

问题:手机客户端向服务器提交Http请求时,Tomcat抛出错误:

十月 20, 2017 6:07:05 下午 org.apache.coyote.http11.AbstractHttp11Processor process信息: Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.java.lang.IllegalArgumentException: Request header is too largeat org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:515)at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:504)at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:174)at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:993)at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)

调试:经过调试后发现是Tomcat的header缓冲区大小不够,只需要在server.xml中增加maxHttpHeaderSize字段即可:

<Connector URIEncoding="UTF-8" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"useBodyEncodingForURI="false"enableLookups="false"               connectionTimeout="20000"               redirectPort="8443" maxHttpHeaderSize="你想要的大小"/>

例子:

<Connector port="8080" protocol="HTTP/1.1"               connectionTimeout="20000"               redirectPort="8443" maxHttpHeaderSize="65536" maxPostSize="4194304"                 URIEncoding="UTF-8"/>


解决方案:

1、手机端改为POST请求问题得到了解决!!(我的解决方案,并未更改服务器配置)

2、如上方式更改服务器配置



总结:

不过使用Web提交就不会出现这种问题,即使手机端再三强调使用的是Post方式,

因为是使用的Get导致Header数据过长(因为这个问题是IOS使用GET请求造成的,所以请使用POST请求,或者服务端设置缓冲区





阅读全文
0 0
原创粉丝点击