2016-09-27 9 views
6
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 

Jak mogę rozwiązać ten problem w mojej aplikacji internetowej wiosennej?JAVA -tomcat- Nagłówek żądania jest zbyt duży

I przeszli przez tego wątku Request header is too large

+0

Podpowiedź: nie ma to nic wspólnego z zaćmieniem. – GhostCat

+0

Czy przechwytywałeś pakiety http dla tego żądania i próbowałeś wyświetlić nagłówki? –

+0

Myślę, że powinny być jakieś zmiany konfiguracji w tomcat niezależnie od Eclipse @ GhostCat –

Odpowiedz

5

rozwiązany! Użyłem HTTP GET zamiast HTTP POST. Technicznie widziałem, że HttpGet będzie miał problem, jeśli długość adresu URL przekroczy 2000 znaków. W takim przypadku lepiej użyć HttpPost lub podzielić adres URL. Przeglądarki mają ograniczenia w zakresie od 2kb - 8kb

0

Nie chodzi o POST lub GET, ale raczej o to, jakie jest ustawienie limitu rozmiaru nagłówka dla Tomcat używanego przez aplikację.

zawsze można kontrolować i konfigurować, że za pomocą właściwości aplikacji, jak poniżej: server.tomcat.max HTTP-header-size = 1024

Gdzie 1024 jest w bajtach.

3

Wiem, że to stary post. Myślę jednak, że dobrze jest wyjaśnić niektóre fragmenty.

  • Korzystanie _server.tomcat.max-http-header-size = parametr max_wanted_size_ można zmienić serwer przyjąć do max_wanted_size, ale nawet jeśli ustawisz że do 10Mb przeglądarka obniżyć żądania param do przeglądarki rozmiar limitu. Próbowałem w wersji chrome i wydaje mi się, że wynosi ona około 150-200 KB.
  • java.lang.IllegalArgumentException dzieje się na serwerze i nie ma nic wspólnego z przeglądarką. Dlatego zmiana wartości server.tomcat.max-http-header-size powinna być wystarczająco dobra i ma miejsce w przypadku korzystania z metody GET, ale może się również zdarzyć, gdy używana jest metoda POST (w przypadku POST parametr maxPostSize powinien zostać zmieniony).
2

tutaj jest pytanie, czy istnieje ograniczenie w nagłówkach HTTP? Odpowiedź jest nr. jest bez limitu, ale serwery WWW ograniczają rozmiar nagłówka przychodzącego żądania nawet w żądaniach POST, dlatego otrzymujemy 413 (nagłówek żądania jest za duży). To ograniczenie obejmuje pola wiersza żądania i nagłówka.

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?


W moim przypadku, miałem SpringBoot 1.5.8 i używane HTTP POST, jednak musiałem dodaj:

server.max-http-header-size=10000000 

w application.properties.

Powiązane problemy