Заголовок JAVA-tomcat-Request слишком велик

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

Как я могу решить это в своем веб-приложении spring?

Я прошел через эту нить заголовок запроса слишком большой

4 ответов


решена! Я использовал HTTP GET вместо HTTP POST. Технически я видел, что HttpGet будет иметь проблему, если длина URL-адреса превышает 2000 символов. В этом случае лучше использовать HttpPost или разделить URL-адрес. Браузеры имеют ограничения в диапазоне от 2kb-8kb

Tomcat: заголовок запроса слишком большой


Я знаю, это старый пост. Однако я думаю, что хорошо бы прояснить некоторые моменты.

  • используя _SERVER для.кот.параметр max-http-header-size=max_wanted_size_ вы измените сервер, чтобы принять до max_wanted_size, но даже если вы установите значение 10 МБ, браузер сократит ваш запрос до предельного размера браузера. Я пробовал в chrome, и это, кажется, около 150-200kb.
  • на java.ленг.IllegalArgumentException происходит на сервере и это не имеет никакого отношения к браузеру. Следовательно, изменение сервера.кот.max-http-header-size должен быть достаточно хорошим, и это происходит при использовании метода GET, но это также может произойти при использовании метода POST (в случае POST параметр maxPostSize должен быть изменен).

вот вопрос, есть ли ограничение в заголовках HTTP? Ответ:нет. есть нет лимит но веб-серверы ограничивают размер заголовка входящего запроса даже в запросах POST, поэтому мы получаем 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

максимальное значение заголовка http?


в моем случае у меня был SpringBoot 1.5.8 и использовал HTTP POST, однако мне пришлось добавить:

server.max-http-header-size=10000000 

in приложение.свойства.


речь идет не о POST или GET, а скорее о настройке ограничения размера заголовка для Tomcat, используемого вашим приложением.

вы всегда можете контролировать и настраивать это с помощью свойств приложения, как показано ниже: сервер.кот.max-http-header-size=1024

где 1024 в байтах.