2016-09-27 32 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 

Làm cách nào để giải quyết vấn đề này trong ứng dụng web mùa xuân của tôi?JAVA -tomcat- Tiêu đề yêu cầu quá lớn

Tôi đã xem qua chủ đề này Request header is too large

+0

Gợi ý: điều này không liên quan gì đến nhật thực tôi đoán. – GhostCat

+0

Bạn có chụp các gói http cho yêu cầu này và cố xem các tiêu đề không? –

+0

tôi nghĩ rằng cần có một số thay đổi cấu hình trong tomcat không phân biệt eclipse @GhostCat –

Trả lời

5

Giải quyết! Tôi đã sử dụng HTTP GET thay vì HTTP POST. Về mặt kỹ thuật, tôi đã thấy HttpGet sẽ gặp sự cố nếu độ dài URL vượt quá 2000 ký tự. Trong trường hợp đó, tốt hơn nên sử dụng HttpPost hoặc chia URL. Trình duyệt có giới hạn khác nhau, trên 2kb - 8kb

0

Nó không phải về POST hoặc GET mà là thiết lập giới hạn kích thước tiêu đề cho Tomcat được ứng dụng của bạn sử dụng.

Bạn luôn có thể kiểm soát và cấu hình rằng việc sử dụng các thuộc tính ứng dụng như sau: server.tomcat.max-http-header-kích thước = 1024

đâu 1024 là trong Bytes.

3

Tôi biết đó là một bài đăng cũ. Tuy nhiên tôi nghĩ rằng nó là tốt để làm rõ một số bit.

  • Sử dụng _server.tomcat.max-http-header-size = tham số max_wanted_size_ bạn sẽ thay đổi máy chủ để chấp nhận lên đến max_wanted_size, nhưng ngay cả khi bạn thiết lập đó để 10Mb trình duyệt sẽ cắt param yêu cầu của bạn cho trình duyệt giới hạn kích thước. Tôi đã thử trong chrome và nó có vẻ là khoảng 150-200kb.
  • java.lang.IllegalArgumentException đang diễn ra trong máy chủ và không liên quan gì đến trình duyệt. Do đó, việc thay đổi server.tomcat.max-http-header-size phải đủ tốt và nó đang xảy ra khi sử dụng phương thức GET nhưng nó cũng có thể xảy ra khi sử dụng phương thức POST (Trong trường hợp POST nên tham số maxPostSize).
2

đây là câu hỏi, có giới hạn nào trong tiêu đề HTTP không? Câu trả lời là Không. có không có giới hạn nhưng máy chủ web đang giới hạn kích thước tiêu đề yêu cầu đến của chúng ngay cả trong yêu cầu POST do đó chúng tôi nhận được 413 (Tiêu đề yêu cầu quá lớn). Giới hạn này bao gồm các trường dòng yêu cầu và tiêu đề.

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?


Trong trường hợp của tôi, tôi đã SpringBoot 1.5.8 và sử dụng HTTP POST, tuy nhiên tôi đã phải thêm:

server.max-http-header-size=10000000 

trong application.properties.

Các vấn đề liên quan