इसक HTTP हेडर क्या है अगर-कोई नहीं-मैच:*का मतलब है?




हिंदी का अर्थ (2)

निम्नलिखित HTTP 1.1 हेडर का क्या अर्थ है?

अगर-कोई नहीं-मैच: *

मैं इसे मजबूत या कमजोर ETag या यहां तक ​​कि ETags की एक सूची का उपयोग करते समय समझता हूं, लेकिन मुझे समझ में नहीं आता है कि स्टार (*) का उपयोग करते समय इसका उपयोग किया जाता है।

संपादित करें: कुछ pseudocode (PHP कोड भी अच्छा होगा) अच्छा होगा जो दिखाएगा कि "इफ-नॉन-मैच: *" का उत्तर कैसे / क्या है।


उत्तर है, यह निर्भर करता है।

मान लीजिए हमें प्राप्त हुआ है

If-None-Match: *
If-Modified-Since: <yesterday date>

और आज पेज बदल दिया गया है।

सबसे पहले, हम * पर एक नज़र डालते हैं जो हमें बताता है: "यदि संसाधन है तो 304 लौटें और शर्त (2) पूरी हो जाए"। ठीक है, संसाधन मौजूद है, लेकिन बीयूटी स्थिति (2) में कहा गया है: "केवल 304 वापसी करें, यदि तारीख वर्तमान से अधिक है"। तो यह शर्त पूरी नहीं होती है, और पेज पूरी तरह से डिलीवर हो जाएगा।

अगर हमें If-Modified-Since प्राप्त नहीं हुआ, तो प्रतिक्रिया 304 होगी।

यदि अनुरोध पर संसाधन मौजूद नहीं था, तो हमने उपयुक्त कोड वापस कर दिया था (जैसे कि अगर कोई नहीं If-None-Match था)।

304 को केवल GET और HEAD अनुरोधों के लिए वापस किया जाना चाहिए, और सभी कैश-संबंधित प्रतिक्रिया हेडर होना चाहिए। अन्य सभी प्रकार के अनुरोधों के लिए आपके सर्वर को 412 उत्तर देने की आवश्यकता है (Precondition विफल)।

मुझे उम्मीद है यह मदद करेगा ;)


RFC 2616 (HTTP 1.1) से उद्धृत:

... यदि "*" दिया गया है और उस संसाधन के लिए कोई भी मौजूदा इकाई मौजूद है, तो सर्वर अनुरोधित विधि का प्रदर्शन नहीं करेगा, जब तक कि ऐसा करने की आवश्यकता न हो, क्योंकि संसाधन का संशोधन दिनांक उस से मेल खाने में विफल रहता है, जो आपूर्ति करता है यदि एक अनुरोध में हेडर फ़ील्ड।

RFC ने कहा कि अनुरोध करने के बजाय, सर्वर को GET और HEAD अनुरोधों के लिए 304 (संशोधित नहीं) के साथ जवाब देना चाहिए, और यह कि उन्हें अन्य सभी प्रकार के अनुरोधों के लिए 412 (पूर्व शर्त के साथ विफल) का जवाब देना चाहिए। लेकिन यह तभी है जब सर्वर वास्तव में अनुरोधित संसाधन का कुछ संस्करण है। यदि आपके पास कोई संस्था नहीं है, तो आपको अनुरोध को संभालना चाहिए (शायद 404 के साथ चूंकि आपके पास कुछ भी नहीं है)।

किसी अनुरोध को संभालने के लिए, पहले यह पता लगाएं कि यदि हेडर मौजूद नहीं था तो सर्वर क्या करेगा। यदि उस अनुरोध का परिणाम 2xx या 304 नहीं होगा, तो अनुरोध को सामान्य मानें। लेकिन अगर रिक्वेस्ट का रिजल्ट 2xx या 304 होगा, तो इफ-नो-मॉडिफाइड केस को हैंडल करें। जब यह एक सितारा होता है, तो बस तुरंत 304 वापस लौटाएं (जब तक कि अगर-संशोधित-जब से ट्रम्पेड न हो)। यदि यह एक या एक से अधिक इकाई टैग है, तो जांच लें कि क्या उन टैगों में से कोई भी उस चीज के टैग से मेल खाता है जिसे आप प्रतिक्रिया के रूप में सेवा करने की योजना बना रहे थे। यदि कोई मैच है, तो 304 लौटें; अगर कोई मेल नहीं है, तो इसे सामान्य रूप से सर्व करें।

बाद में RFC में, अधिक है:

"यदि-कोई नहीं-मैच: *" का अर्थ यह है कि यदि आवश्यक हो तो मूल सर्वर द्वारा चयनित प्रतिनिधित्व (या कैश द्वारा, संभवतः व्यर्थ तंत्र का उपयोग करके, खंड 14.44 देखें) मौजूद है, और SHOULD प्रदर्शन किया जाना चाहिए। यदि प्रतिनिधित्व मौजूद नहीं है। यह सुविधा PUT संचालन के बीच दौड़ को रोकने के लिए उपयोगी है।

यही है, स्टार क्लाइंट को यह कहने की अनुमति देता है, "यदि इस फ़ाइल का कोई संस्करण पहले से ही वहां नहीं है, तो इस फ़ाइल को न भरें।"





http-1.1