2009-06-17 16 views
6

वहाँ एक HTTP स्थिति हैडर लिखने के लिए कई तरह से कर रहे हैं:सिंटेक्स

HTTP/1.1 404 Not Found 
Status: 404 
Status: 404 Not Found 

लेकिन जो शब्दार्थ-सही और कल्पना अनुरूप तरीका है?

संपादित करें: स्टेटस हेडर द्वारा मेरा मतलब है this, PHP के header() जैसे फ़ंक्शन का उपयोग करके।

उत्तर

1

निकटतम बात मैं एक जवाब के लिए मिल गया है के लिए W3C के कल्पना है Fast CGI spec है, जो स्थिति और स्थान शीर्षलेख के माध्यम से स्टेटस कोड सेट करने के लिए कहता है।

3
http://tools.ietf.org/html/rfc2616#section-6 के बाद से

और अधिक विशेष रूप http://tools.ietf.org/html/rfc2616#section-6.1 के प्रयोग का उल्लेख नहीं है "स्थिति:" जब एक स्थिति कोड का संकेत है, और http://www.iana.org/assignments/message-headers/message-headers.xml पर हेडर की आधिकारिक सूची के बाद से उल्लेख नहीं है "स्थिति", मैं इस पर विश्वास करने के लिए इच्छुक होगी चाहिए एक शीर्षलेख के रूप में इसके साथ परोसा नहीं है।

4

कुछ समय बाद कुछ जानकारी जोड़ना, क्योंकि मैं इस सवाल पर आया था, जबकि कुछ संबंधित शोध कर रहा था।

मेरा मानना ​​है कि स्थिति हैडर क्षेत्र मूल रूप से सीजीआई विवरण के एक हिस्से के रूप में आविष्कार किया गया था, आरएफसी 3875:

https://tools.ietf.org/html/rfc3875#section-6.3.3

के शब्दों में:

The Status header field contains a 3-digit integer result code that 
indicates the level of success of the script's attempt to handle the 
request. 

    Status   = "Status:" status-code SP reason-phrase NL 
    status-code = "200" | "302" | "400" | "501" | extension-code 
    extension-code = 3digit 
    reason-phrase = *TEXT 

यह एक CGI स्क्रिप्ट एक वापस जाने के लिए अनुमति देता है वेब सर्वर पर स्टेटस कोड जो HTTP स्थिति रेखा में डिफ़ॉल्ट रूप से ओवरराइड ओवरराइड करता है। आम तौर पर सर्वर स्क्रिप्ट से परिणाम बफर करता है और क्लाइंट के लिए एक नया हेडर उत्सर्जित करता है। यह एक वैध HTTP शीर्षलेख है जो एक संशोधित HTTP स्थिति रेखा से शुरू होता है और स्क्रिप्ट "स्थिति:" हेडर फ़ील्ड (साथ ही आरएफसी द्वारा अनिवार्य कुछ अन्य परिवर्तन) को छोड़ देता है।

तो आपके सभी उदाहरण CGI स्क्रिप्ट से मान्य हैं, लेकिन केवल पहले HTTP शीर्षलेख में मान्य है। उत्तरार्द्ध दो केवल एक CGI स्क्रिप्ट (या शायद एक फास्टसीजीआई आवेदन) से आते हैं।

एक सीजीआई स्क्रिप्ट "गैर-पारस्परिक शीर्षलेख" (एनपीएच) मोड में भी काम कर सकती है, जब यह एक पूर्ण और वैध HTTP शीर्षलेख उत्पन्न करता है जो वेब सर्वर क्लाइंट वर्बैटिम से गुजरता है। इस प्रकार इसमें कोई स्थिति शामिल नहीं होनी चाहिए: हेडर फ़ील्ड।

नोट, मुझे क्या दिलचस्पी है, अगर एनपीएच स्क्रिप्ट को थोड़ा गलत हो जाता है और स्थिति को उत्सर्जित करता है: हेडर फ़ील्ड, संभवतः HTTP स्थिति रेखा के अतिरिक्त। मुझे कोई स्पष्ट संकेत नहीं मिल रहा है और मुझे संदेह है कि यह आउटपुट, या तो क्लाइंट या सर्वर को जो भी पार्स कर रहा है, उसके कार्यान्वयन के लिए छोड़ दिया गया है।

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