在博客文章中,我使用如下PHP來設置響應的內容類型: html
header('content-type: application/json; charset=utf-8');
我剛剛對該帖子發表評論說content-type
須要大寫, Content-type
。 它是否正確? 它彷佛適用於全部小寫的我,我假設HTTP標題不區分大小寫。 或者它只是工做,由於瀏覽器很好? json
header('Content-type: image/png')
不支持PHP 5.5服務IE11,由於圖像流顯示爲文本 瀏覽器
header('Content-Type: image/png')
起做用,如圖像中顯示的圖像 app
惟一的區別是資本'T'。 spa
HTTP的RFC(如上所述)規定標題不區分大小寫,可是你會發現,對於某些瀏覽器(我在看你,IE),每一個單詞的大寫最好: code
Location: http://stackoverflow.com Content-Type: text/plain
VS htm
location: http://stackoverflow.com content-type: text/plain
這不是「HTTP」標準,而是另外一個瀏覽器怪癖,咱們做爲開發人員,必須考慮。 token
tldr; HTTP / 1.1和HTTP / 2標頭都不區分大小寫。 utf-8
根據RFC 7230 (HTTP / 1.1): 資源
每一個頭字段由不區分大小寫的字段名稱後跟冒號(「:」),可選的前導空格,字段值和可選的尾隨空格組成。
https://tools.ietf.org/html/rfc7230#section-3.2
此外, RFC 7540 (HTTP / 2):
就像在HTTP / 1.x中同樣,頭字段名稱是ASCII的字符串
以不區分大小寫的方式比較的字符。
https://tools.ietf.org/html/rfc7540#section-8.1.2
標題名稱不區分大小寫。
從RFC 2616 - 「超文本傳輸協議 - HTTP / 1.1」 , 第4.2節「消息頭」 :
每一個標題字段由一個名稱後跟一個冒號(「:」)和字段值組成。 字段名稱區分敏感 。
更新RFC 7230未列出此部分RFC 2616的任何更改 。
根據RFC 2616 ,HTTP標頭名稱不區分大小寫:
4.2:
每一個標題字段由一個名稱後跟一個冒號(「:」)和字段值組成。 字段名稱不區分大小寫。
(字段值可能區分大小寫,也可能不區分大小寫。)
若是您信任主流瀏覽器遵照此規則,那麼您已經完成了全部設置。
順便說一句,不像大多數HTTP的,方法(動詞) 區分大小寫:
5.1.1方法
Method標記表示要對其執行的方法
Request-URI標識的資源。 該方法區分大小寫。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