首页 文章

HTTP标头区分大小写吗?

提问于
浏览
541

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

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

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

5 回答

  • 734

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

    Location: http://stackoverflow.com
    
    Content-Type: text/plain
    

    VS

    location: http://stackoverflow.com
    
    content-type: text/plain
    

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

  • 1

    header('Content-type: image/png') 无法使用PHP 5.5提供IE11,因为图像流显示为文本

    header('Content-Type: image/png') 工作,如图像中显示为图像

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

  • 23

    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

  • 13

    Headers 名称不区分大小写 .

    RFC 2616 - "Hypertext Transfer Protocol -- HTTP/1.1"Section 4.2, "Message Headers"

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

    更新RFC 7230未在此部分列出任何changes from RFC 2616 .

  • 201

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

    4.2:

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

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

    如果您信任主流浏览器遵守此规则,那么您已经完成了所有设置 .


    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

相关问题