HTTP标头区分大小写吗?

杀马特。学长 韩版系。学妹 提交于 2020-01-06 14:01:45

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

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

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

我刚刚对该帖子发表评论说content-type需要大写, Content-type 。 它是否正确? 它似乎适用于所有小写的我,我假设HTTP标题不区分大小写。 或者它只是工作,因为浏览器很好?


#1楼

header('Content-type: image/png')不支持PHP 5.5服务IE11,因为图像流显示为文本

header('Content-Type: image/png')起作用,如图像中显示的图像

唯一的区别是资本'T'。


#2楼

HTTP的RFC(如上所述)规定标题不区分大小写,但是你会发现,对于某些浏览器(我在看你,IE),每个单词的大写最好:

Location: http://stackoverflow.com

Content-Type: text/plain

VS

location: http://stackoverflow.com

content-type: text/plain

这不是“HTTP”标准,而是另一个浏览器怪癖,我们作为开发人员,必须考虑。


#3楼

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


#4楼

标题名称不区分大小写。

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

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

更新RFC 7230未列出此部分RFC 2616的任何更改


#5楼

根据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
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!