ajax खाली "उम्मीद है:" हैडर कुछ भी मतलब है?



web httpserver (1)

अगर आप Expect हेडर हटा दें तो कुछ भी नहीं टूटना चाहिए , लेकिन मुझे पता है कि माइक्रोसॉफ्ट आईआईएस ने पिछले 100 Continue रखे हैं। उदाहरण के लिए, IIS5 हमेशा 100 प्रतिक्रियाएं जारी करता है । इसलिए, मुझे आश्चर्य है कि पुस्तकालयों में कम से कम इसका उपयोग कुछ सर्वरों में समान रूप से टूटा व्यवहार के आसपास काम करने के लिए हो सकता है।

कई लाइब्रेरी इस हेडर को सेट करते हैं और फिर वास्तव में 100 Continue ठीक से नहीं संभालते हैं - जैसे वे 100 Continue लिए प्रतीक्षा किए बिना अनुरोध को तुरंत भेजना शुरू करते हैं और फिर इस तथ्य को संभालना नहीं है कि सर्वर पहले किसी भी HTTP त्रुटि कोड को वापस भेज सकता है उन्होंने अनुरोध निकाय भेजना समाप्त कर दिया है (पहला हिस्सा ठीक है, यह दूसरा भाग है जो टूटा हुआ है - बाद में मेरे उत्तर में देखें)। इससे मुझे यह विश्वास हो जाता है कि कुछ लेखकों ने अभी तक इसे आसानी से सूक्ष्मता को समझने के बिना कहीं और कॉपी किया है।

मुझे रिक्त Expect हेडर शामिल करने के लिए कोई कारण नहीं मिल सकता है - अगर आप 100-continue (या कुछ अन्य Expect क्लॉज) को शामिल नहीं करने जा रहे हैं तो शीर्षलेख को पूरी तरह से छोड़ दें इसे शामिल करने का एकमात्र कारण टूटे हुए वेबसर्वर के आसपास काम करना होगा, लेकिन मुझे इस बारे में पता नहीं है कि इस तरह से व्यवहार करें।

आखिरकार, अगर आप केवल गोल की छलांग को कम करने की तलाश कर रहे हैं तो मुझे लगता है कि यह आरएफसी के साथ असंगत नहीं होगा, बस अनुरोध निकाय को तुरंत भेजने के लिए आपको अनुरोध शरीर ( आरएफसी के मुताबिक) भेजने के लिए अनिश्चित काल तक इंतजार नहीं करना चाहिए, इसलिए आप कल्पना करना चाहते हैं - यह वैसे भी भेजने से पहले ही आपका समय समाप्ति शून्य है।

आपको यह अवश्य पता होना चाहिए कि सर्वर 100 Continue नहीं भेजे जाने के लिए स्वतंत्र हैं, यदि वे पहले से कुछ अनुरोध निकाय प्राप्त कर चुके हैं, तो आपको उन सभी सर्वरों को संभाल करना होगा जो 100 Continue भेजते हैं, जो कुछ भी नहीं भेजते हैं और पूर्ण अनुरोध के लिए प्रतीक्षा करते हैं जो तत्काल किसी भी HTTP त्रुटि कोड भेजते हैं (जो 417 हो सकता है, लेकिन अधिक सामान्य 4xx कोड)। इस तरह, आपके लघु अनुरोधों को किसी भी ओवरहेड ( Expect हैडर से अलग) नहीं होना चाहिए, लेकिन आपको 100 Continue लिए प्रतीक्षा करना होगा 100 Continue बेशक, काम करने के लिए इस दृष्टिकोण के लिए आपको चीजों को एक तरह से करने की ज़रूरत होगी जिससे आपको अनुरोध को बीच में आना पड़ेगा जैसे सर्वर एक त्रुटि कोड देता है (उदाहरण के लिए गैर-अवरुद्ध आईओ poll() या select()

इस तरह से काम करने से आपके कोड को लेटेंसी कम करने के दौरान छोटे और बड़े अनुरोधों के बीच अधिक सुसंगत रखने में मदद मिल सकती है। नकारात्मक पक्ष यह है कि शायद आरएफसी लेखकों के मन में क्या नहीं है, भले ही यह स्पष्ट रूप से किसी भी आवश्यकताओं का उल्लंघन नहीं करता है इसके अलावा, यह आपके बाद के कोड को अधिक जटिल बना सकता है यदि आप पहले से ही गैर अवरुद्ध IO या समान बना रहे हैं।

कई पुस्तकालयों में Expect: 100-continue सभी HTTP 1.1 पोस्ट और डिफ़ॉल्ट रूप से PUT अनुरोधों पर Expect: 100-continue

मैं उन अनुरोधों पर क्लाइंट साइड पर 100-जारी तंत्र को निकालने का इरादा रखता हूं, जिनके लिए मुझे तुरंत जानकारी भेजने की कीमत पता है 100 से जारी रखने के लिए एक दौर की प्रतीक्षा की अपेक्षा से कम है, अर्थात् लघु अनुरोधों पर।

बेशक मैं अभी भी HTTP 1.1 की अन्य सभी महान विशेषताओं चाहते हैं, इस प्रकार केवल मैं Expect: 100-continue को मारना चाहता हूं Expect: 100-continue हेडर Expect: 100-continue मेरे पास दो विकल्प हैं:

  • पूरी तरह से हेडर की अपेक्षा करें, या
  • खाली उम्मीदवार हेडर भेजें, Expect:\r\n

क्या दोनों के बीच कोई अंतर है?

कोई सॉफ्टवेयर जो एक या दूसरे के लिए टूट सकता है?





http-status-code-100