INFO: 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 large
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:512)
at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:501)
at org.apache.coyote.http11.InternalInputBuffer.parseRequestLine(InternalInputBuffer.java:171)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:996)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:623)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:722
我怎样才能在春季网页应用程序中解决这个问题?
我已经完成了这个帖子Request header is too large
答案 0 :(得分:10)
解决! 我使用HTTP GET而不是HTTP POST。 从技术上讲,如果URL长度超过2000个字符,我发现HttpGet会有问题。在这种情况下,最好使用HttpPost或拆分URL。 浏览器的限制范围为2kb - 8kb
答案 1 :(得分:6)
这是问题,HTTP标头是否有任何限制?答案是否。 有无限制,但是即使在POST请求中,Web服务器也限制了它们的传入请求标头大小,因此我们得到413(请求标头太大)。此限制包括请求行和标题字段。
http://httpd.apache.org/docs/2.2/mod/core.html#limitrequestfieldsize
https://tomcat.apache.org/tomcat-5.5-doc/config/http.html
http://nginx.org/en/docs/http/ngx_http_core_module.html#large_client_header_buffers
Maximum on http header values?
在我的情况下,我使用了SpringBoot 1.5.8并使用了HTTP POST,但是我必须添加:
server.max-http-header-size=10000000
在application.properties中。
答案 2 :(得分:5)
我知道这是一个老帖子。但是我认为澄清一些内容是件好事。
答案 3 :(得分:2)
这不是POST或GET,而是您的应用程序使用的Tomcat的头大小限制设置。
您可以随时使用app属性控制和配置,如下所示: server.tomcat.max-HTTP报头大小= 1024
其中1024是字节。
答案 4 :(得分:2)
在 application.properties
中使用 Spring Boot 2.4:
server.max-http-header-size=10MB
答案 5 :(得分:0)
请求和响应HTTP标头的最大大小,在 个字节。如果未指定,则此属性设置为4096(4 KB)。
为避免出现Error parsing HTTP request header
错误,您可以通过执行以下操作增加以下值。
转到以下位置:$TOMCAT_HOME/conf/server.xml
在server.xml
中,更改HTTP/1.1 Connector
条目,并将maxHttpHeaderSize
设置为“ 65536 ”(64Kb字节),如下所示:
<Connector port="8080" maxHttpHeaderSize="65536" protocol="HTTP/1.1" ... />
或
您可以使用POST方法,根据Tomcat,它最多可以承载2 MB。
POST将处理的最大大小(以字节为单位) 容器FORM URL参数解析。该限制可以通过以下方式禁用 将此属性设置为小于或等于0的值。 指定,此属性设置为2097152(2兆字节)。
希望这些信息对您有所帮助。
答案 6 :(得分:0)
这是一个旧帖子-但是任何想改变的人 最新的春季启动(版本> = 2.1)中的server.max-http-header-size-值应在Datasize可解析值中提供 例如-server.max-http-header-size = 64KB
答案 7 :(得分:0)
我将为该问题添加一个不同的“答案”:问题可能出在访问该网站的用户的浏览器中, cookie太多或太大。
尽管大多数人(可以理解)集中于如何将Tomcat更改为允许更大的标头,但我要指出的是,在遇到此错误的情况下,我能够使用浏览器开发工具以某种方式查看该错误是有大量Cookie被发送到产生错误的网站。 (他们似乎有点觉得我在服务器上创建了一些东西是错误的,因为他们将它们命名为几乎是重复的,并且具有重复的值。)
我已清除了该站点的cookie(使用浏览器开发工具),但现在没有得到该错误。当然,清除cookie可能会导致诸如退出网站等问题。就我而言,要再次使用该网站要付出很小的代价。
我将其保留,以防别人有一天会碰到它,或者是遇到错误的人(像我一样),或者是用户正在报告该错误的服务器管理员,他们可能会要求他们考虑清除其网站的Cookie (当然,还有很多方法可以帮助网站)。
答案 8 :(得分:0)
就我而言,我显示的是blob
图像而不是<img src="example.com/{extremely-long-base64-encoded-string}">
的URL路径<img scr="data:;base64,{extremely-long-base64-encoded-string}">
您会注意到差异,这就是导致错误INFO: Error parsing HTTP request header
java.lang.IllegalArgumentException: Request header is too large