在博客文章中,我使用以下PHP来设置响应的内容类型:
header('content-type: application/json; charset=utf-8');
我刚刚对该帖子发表评论说 content-type 需要大写, Content-type . 它是否正确?它似乎适用于所有小写的我,我假设HTTP Headers 不区分大小写 . 或者它是否正常工作,因为浏览器很好?
content-type
Content-type
HTTP的RFC(如上所述)规定 Headers 不区分大小写,但是你会发现,对于某些浏览器(我正在看你,IE),每个单词的大写最好:
Location: http://stackoverflow.com Content-Type: text/plain
VS
location: http://stackoverflow.com content-type: text/plain
这不是“HTTP”标准,而是另一个浏览器怪癖,我们作为开发人员,必须考虑 .
header('Content-type: image/png') 无法使用PHP 5.5提供IE11,因为图像流显示为文本
header('Content-type: image/png')
header('Content-Type: image/png') 工作,如图像中显示为图像
header('Content-Type: image/png')
唯一的区别是资本'T' .
tldr; HTTP / 1.1和HTTP / 2标头都不区分大小写 .
根据 RFC 7230 (HTTP / 1.1):
每个 Headers 字段由不区分大小写的字段名称后跟冒号(“:”),可选的前导空格,字段值和可选的尾随空格组成 .
https://tools.ietf.org/html/rfc7230#section-3.2
此外, RFC 7540 (HTTP / 2):
就像在HTTP / 1.x中一样, Headers 字段名称是ASCII字符串,以不区分大小写的方式进行比较 .
https://tools.ietf.org/html/rfc7540#section-8.1.2
Headers 名称不区分大小写 .
从RFC 2616 - "Hypertext Transfer Protocol -- HTTP/1.1",Section 4.2, "Message Headers":
每个 Headers 字段由名称后跟冒号(“:”)和字段值组成 . 字段名称不区分大小写 .
更新RFC 7230未在此部分列出任何changes from RFC 2616 .
根据RFC 2616,HTTP标头名称不区分大小写:
4.2:
(字段值可能区分大小写,也可能不区分大小写 . )
如果您信任主流浏览器遵守此规则,那么您已经完成了所有设置 .
BTW,与大多数HTTP不同,方法(动词)区分大小写:
5.1.1方法
Method标记指示要对Request-URI标识的资源执行的方法 . 该方法区分大小写 . 方法=“选项”;第9.2节| “GET”;第9.3节| “HEAD”;第9.4节| “POST”;第9.5节| “PUT”;第9.6节| “删除”;第9.7节| “追踪”;第9.8节| “连接”;第9.9节|扩展法extension-method = token
5 回答
HTTP的RFC(如上所述)规定 Headers 不区分大小写,但是你会发现,对于某些浏览器(我正在看你,IE),每个单词的大写最好:
VS
这不是“HTTP”标准,而是另一个浏览器怪癖,我们作为开发人员,必须考虑 .
header('Content-type: image/png')
无法使用PHP 5.5提供IE11,因为图像流显示为文本header('Content-Type: image/png')
工作,如图像中显示为图像唯一的区别是资本'T' .
tldr; HTTP / 1.1和HTTP / 2标头都不区分大小写 .
根据 RFC 7230 (HTTP / 1.1):
https://tools.ietf.org/html/rfc7230#section-3.2
此外, RFC 7540 (HTTP / 2):
https://tools.ietf.org/html/rfc7540#section-8.1.2
Headers 名称不区分大小写 .
从RFC 2616 - "Hypertext Transfer Protocol -- HTTP/1.1",Section 4.2, "Message Headers":
更新RFC 7230未在此部分列出任何changes from RFC 2616 .
根据RFC 2616,HTTP标头名称不区分大小写:
4.2:
(字段值可能区分大小写,也可能不区分大小写 . )
如果您信任主流浏览器遵守此规则,那么您已经完成了所有设置 .
BTW,与大多数HTTP不同,方法(动词)区分大小写:
5.1.1方法