क्या nginx 411 सामग्री-लंबाई की आवश्यक त्रुटियों से बचने का एक तरीका है?


11

जब कंटेंट-लंबाई निर्दिष्ट किए बिना PUT करने की कोशिश कर रहा हूं, तो मैं nginx से 411 स्टेटस पा रहा हूं। क्या ऐसा होने से अक्षम करने का कोई तरीका है?

nginx 

जवाबों:


10

आप इसे अपनी क्वेरी में जोड़ने का प्रयास कर सकते हैं:

कर्ल -i -X ​​PUT -H 'सामग्री-लंबाई: 0' ' http://www.example.com/test '

HttpChunkinModule को स्थापित करने या Nginx को 1.3.9+ में अपडेट करने का प्रयास करें

इस मॉड्यूल को अब Nginx 1.3.9+ की आवश्यकता नहीं है क्योंकि 1.3.9 के बाद से, Nginx कोर में पहले से ही chunked अनुरोध निकायों के लिए अंतर्निहित समर्थन है।


5

PUT अनुरोधों के लिए सामग्री-लंबाई की आवश्यकता होती है। यह Nginx नहीं है, यह HTTP है जो यह आवश्यकता बना रहा है। PUT अनुरोध, जैसे POST अनुरोध, आवश्यक रूप से एक सामग्री निकाय है। वह शरीर शून्य-लंबाई का हो सकता है, लेकिन यदि ऐसा है तो आपको स्पष्ट रूप से ऐसा कहना होगा। जाहिर है आप यह नहीं मान सकते हैं कि कनेक्शन बंद होने तक सामग्री जारी रहती है (जो कि एक अनुपस्थित सामग्री-लंबाई हेडर का तात्पर्य है), क्योंकि कनेक्शन बंद होने से पहले सर्वर को अनुरोध का जवाब देने में सक्षम होना पड़ता है।


3
यह गलत है। w3.org/Protocols/rfc2616/rfc2616-sec4.html "अनुरोध में संदेश-निकाय की उपस्थिति अनुरोध के संदेश-शीर्षलेख में सामग्री-लंबाई या स्थानांतरण-एन्कोडिंग हेडर फ़ील्ड के शामिल होने से संकेतित होती है।" यह नगीनेक्स में एक बग है जो हाल के संस्करणों में तय किया गया है। ध्यान दें कि यह बग PUT से बहुत पहले POST के लिए तय किया गया था।
निक पामर

2

पुराने ईश प्रश्न, लेकिन जब से मैं एक वेब खोज से इस में ठोकर खाई:

NginX 1.3.9 और इसके बाद के संस्करण POST और PUT के लिए बॉक्स से बाहर "ट्रांसफ़र-एन्कोडिंग: chunked" का समर्थन करता है।

कटा हुआ हस्तांतरण के साथ, आप पहले सामग्री-लंबाई निर्धारित किए बिना फ़ाइलें भेज सकते हैं।


हाँ, यह तय है, धन्यवाद!
रोजगारपैक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.