मैं एक सरल HTTP सर्वर लिख रहा हूं जो क्लाइंट के रूप में अधिकतर curl से PUT अनुरोध स्वीकार करेगा और मुझे Expect: 100-continue
शीर्षलेख को संभालने के साथ कुछ समस्या हो रही है।"100 जारी रखें" HTTP संदेश को कैसे संभालें?
के रूप में मैं इसे समझते हैं, सर्वर, शीर्ष लेख को पढ़ने के कनेक्शन पर एक HTTP/1.1 100 Continue
प्रतिक्रिया वापस भेज धारा Content-Length
पर मूल्य तक पढ़ और फिर वापस असली जवाब कोड (आमतौर पर HTTP/1.1 200 OK
लेकिन किसी अन्य भेजने के लिए माना जाता है वैध HTTP उत्तर करना चाहिए)।
ठीक है, यह वही है जो मेरा सर्वर करता है। समस्या यह है कि, जाहिर है, अगर मैं 100 Continue
उत्तर भेजता हूं, तो curl किसी भी बाद के HTTP त्रुटि कोड की रिपोर्ट करने में विफल रहता है और मानता है कि अपलोड सफल रहा। उदाहरण के लिए, यदि सामग्री की प्रकृति के कारण अपलोड अस्वीकार कर दिया गया है (एक मूल डेटा जांच हो रही है), मैं चाहता हूं कि कॉलिंग क्लाइंट समस्या का पता लगाने और तदनुसार कार्य करे।
क्या मुझे कुछ याद आ रही है?
संपादित करें: यहाँ एक माध्यमिक हेडर के साथ cURL से एक नमूना उत्पादन एक त्रुटि युक्त:
> PUT /test1%2Epdf HTTP/1.1
> Authorization: Basic xxxx
> User-Agent: curl/7.20.0 (i386-pc-win32) libcurl/7.20.0 OpenSSL/0.9.8l zlib/1.2.3
> Host: localhost
> Accept: */*
> Content-Length: 24
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
< HTTP/1.1 415 Unsupported Media Type
< Connection: close
< Content-Type: text/xml
< Content-Length: 289
<
है नहीं तो आप के बाद 'HTTP/1.1 100 CONTINUE' रिक्त पंक्ति की ज़रूरत है? – YOU
एक है। तथ्य यह है कि यह लॉग नहीं किया जा रहा है curl के साथ एक प्रदर्शन मुद्दा प्रतीत होता है। – Stephane
बस स्पष्ट करने के लिए, एक पूरी तरह से मान्य HTTP प्रतिक्रिया वापस भेजें ('HTTP/1.1 100 जारी रखें \ r \ n \ r \ n') न केवल स्ट्रिंग' HTTP/1.1 100 जारी रखें "। curl क्लाइंट तब तक इंतजार करेगा जब तक कि वह उन दो अनुक्रम प्राप्त करता है, और यदि यह छोड़ देता है, तो यह "100-जारी रखने के लिए प्रतीक्षा कर रहा है" संदेश आउटपुट (वर्बोज मोड में) होगा। –
bishop