HTTP标头是什么情况

在博客文章中,我使用以下PHP来设置响应的内容类型:

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

我刚刚对该帖子发表评论说, content-type需要大写, Content-type 。 它是否正确? 它似乎对所有小写字母都适用,并且我认为HTTP标头不区分大小写。 还是只是因为浏览器很好?


从RFC 2616 - “超文本传输​​协议 - HTTP / 1.1”,第4.2节“消息头”:

每个标题字段由一个名称后跟一个冒号(“:”)和字段值组成。 字段名称不区分大小写。

更新的RFC 7230在这部分没有列出来自RFC 2616的任何更改。


根据RFC 2616,HTTP标头名称不区分大小写:

4.2:

每个标题字段由一个名称后跟一个冒号(“:”)和字段值组成。 字段名称不区分大小写。

(字段值可能区分大小写,也可能不区分大小写。)

如果你信任主要浏览器遵守这一点,那么你就全都设置好了。


顺便说一句,与大多数HTTP不同,方法(动词)区分大小写:

5.1.1方法

方法标记指示要在该方法上执行的方法
由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

tldr; HTTP / 1.1和HTTP / 2标头都不区分大小写。

根据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

链接地址: http://www.djcxy.com/p/12451.html

上一篇: Are HTTP headers case

下一篇: View HTTP headers in Google Chrome?