क्या HTTP शीर्षलेख केस-संवेदी हैं?




http-headers (4)

एक ब्लॉग पोस्ट में मैं प्रतिक्रिया के सामग्री-प्रकार को सेट करने के लिए निम्न PHP का उपयोग करता हूं:

header('content-type: application/json; charset=utf-8');

मुझे उस पोस्ट पर एक टिप्पणी मिली है जिसमें कहा गया है कि content-type को पूंजीकृत, Content-type । क्या ये सही है? ऐसा लगता है कि मेरे लिए सभी निचले मामले के साथ काम करना प्रतीत होता है, और मुझे लगता है कि HTTP शीर्षलेख केस-असंवेदनशील थे। या यह सिर्फ काम करता है क्योंकि ब्राउज़र अच्छे हैं?


HTTP के लिए आरएफसी (जैसा कि ऊपर उद्धृत किया गया है) यह बताता है कि हेडर केस-असंवेदनशील हैं, हालांकि आप पाएंगे कि कुछ ब्राउज़रों के साथ (मैं आपको देख रहा हूं, आईई) जो कि प्रत्येक शब्द को कैपिटल करना सर्वोत्तम होता है:

Location: http://.com

Content-Type: text/plain

बनाम

location: http://.com

content-type: text/plain

यह "HTTP" मानक नहीं है, लेकिन ब्राउजर क्विर्क में से एक और, हम डेवलपर्स के रूप में सोचते हैं।


आरएफसी 2616 के मुताबिक HTTP हेडर नाम केस-असंवेदनशील हैं:

4.2:

प्रत्येक शीर्षलेख फ़ील्ड में एक नाम होता है जिसके बाद एक कोलन (":") और फ़ील्ड मान होता है। फील्ड नाम केस-असंवेदनशील हैं।

(फ़ील्ड मान केस-संवेदी हो सकते हैं या नहीं भी हो सकते हैं।)

यदि आप इस पर निर्भर रहने के लिए प्रमुख ब्राउज़रों पर भरोसा करते हैं, तो आप पूरी तरह से सेट हैं।

बीटीडब्ल्यू, अधिकांश HTTP के विपरीत, विधियों (क्रियाएं) केस संवेदनशील हैं:

5.1.1 विधि

विधि टोकन उस विधि को करने के लिए इंगित करता है
अनुरोध-यूआरआई द्वारा पहचाना संसाधन। विधि केस-संवेदी है।

   Method         = "OPTIONS"                ; Section 9.2
                  | "GET"                    ; Section 9.3
                  | "HEAD"                   ; Section 9.4
                  | "POST"                   ; Section 9.5
                  | "PUT"                    ; Section 9.6
                  | "DELETE"                 ; Section 9.7
                  | "TRACE"                  ; Section 9.8
                  | "CONNECT"                ; Section 9.9
                  | extension-method
   extension-method = token

header('Content-type: image/png') आईई 11 की सेवा करने वाले PHP 5.5 के साथ काम नहीं करता है, क्योंकि छवि स्ट्रीम में टेक्स्ट के रूप में दिखाया गया था

header('Content-Type: image/png') काम करता है, जैसा कि छवि में एक छवि के रूप में दिखाई देता है

केवल अंतर ही पूंजी 'टी' है।


tldr; HTTP / 1.1 और HTTP / 2 हेडर दोनों केस-असंवेदनशील हैं।

आरएफसी 7230 (HTTP / 1.1) के अनुसार:

प्रत्येक हेडर फ़ील्ड में एक केस-असंवेदनशील फ़ील्ड नाम होता है जिसके बाद एक कोलन (":"), वैकल्पिक अग्रणी व्हाइटस्पेस, फ़ील्ड मान, और वैकल्पिक पिछला सफेद स्थान होता है।

tools.ietf.org/html/rfc7230#section-3.2

इसके अलावा, आरएफसी 7540 (HTTP / 2):

जैसे HTTP / 1.x में, हेडर फ़ील्ड नाम ASCII के तार हैं
ऐसे मामलों की तुलना करें जो केस-असंवेदनशील फैशन में तुलना की जाती हैं।

https://tools.ietf.org/html/rfc7540#section-8.1.2





http-headers