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

मैं अपने वसंत वेब एप्लिकेशन में इसे कैसे हल कर सकता हूं?जावा-टोमकैट- अनुरोध हेडर बहुत बड़ा है

मैं इस सूत्र Request header is too large

+0

संकेत: मुझे ग्रहण के साथ ऐसा करने के लिए कुछ भी नहीं है। – GhostCat

+0

क्या आपने इस अनुरोध के लिए http पैकेट को कैप्चर किया था और हेडर देखने की कोशिश की थी? –

+0

मुझे लगता है कि ग्रहण @GostCat –

उत्तर

5

हल के माध्यम से चला गया था! मैं HTTP पोस्ट के बजाय HTTP GET का उपयोग कर रहा था। तकनीकी रूप से मैंने देखा है कि URL लंबाई 2000 वर्णों से अधिक हो जाने पर HttpGet को समस्या होगी। उस स्थिति में, एचटीपीपोस्ट का उपयोग करना या यूआरएल को विभाजित करना बेहतर है। ब्राउज़रों की 2kb - 8kb

0

पर सीमाएं हैं, यह POST या GET के बारे में नहीं है बल्कि आपके एप्लिकेशन द्वारा उपयोग किए गए टोमकैट के लिए हेडर आकार सीमा सेटअप क्या है।

तुम हमेशा को नियंत्रित करने और कॉन्फ़िगर कर सकते हैं कि नीचे के रूप में एप्लिकेशन प्रॉपर्टी का उपयोग कर: server.tomcat.max-http हेडर आकार = 1024

कहाँ 1024 बाइट्स में है।

3

मुझे पता है कि यह एक पुरानी पोस्ट है। हालांकि मुझे लगता है कि कुछ बिट्स को स्पष्ट करना अच्छा है।

  • _server.tomcat.max-http हेडर आकार = max_wanted_size_ पैरामीटर का उपयोग करके आप max_wanted_size को स्वीकार करने के लिए सर्वर बदल जाएगा, लेकिन भले ही आपके द्वारा सेट किए 10 एमबी करने के लिए ब्राउज़र ब्राउज़र के लिए आपके अनुरोध परम कट जाएगा आकार सीमित करें। मैंने क्रोम में कोशिश की है और यह लगभग 150-200 केबी लगता है।
  • java.lang.IllegalArgumentException सर्वर में हो रहा है और इसका ब्राउज़र के साथ कोई संबंध नहीं है। इसलिए, server.tomcat.max-http-header-size को बदलना काफी अच्छा होना चाहिए और यह GET विधि का उपयोग करते समय हो रहा है लेकिन यह POST विधि का उपयोग करते समय भी हो सकता है (POST मामले में maxPostSize पैरामीटर बदला जाना चाहिए)।
2

यहां सवाल है, क्या 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

Maximum on http header values?


मेरे मामले में, मैं SpringBoot 1.5.8 और प्रयुक्त HTTP POST ने हालांकि मैं करना पड़ाजोड़ें:

server.max-http-header-size=10000000 

application.properties में।

संबंधित मुद्दे