Are HTTP headers case-sensitive?

后端 未结 8 2286
梦如初夏
梦如初夏 2020-11-22 03:03

In a blog post I use the following PHP to set the content-type of a response:

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

I

相关标签:
8条回答
  • 2020-11-22 03:09

    Header names are not case sensitive.

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

    Each header field consists of a name followed by a colon (":") and the field value. Field names are case-insensitive.

    The updating RFC 7230 does not list any changes from RFC 2616 at this part.

    0 讨论(0)
  • 2020-11-22 03:09

    officially, headers are case insensitive, however, it is common practice to capitalize the first letter of every word.
    but, because it is common practice, certain programs like IE assume the headers are capitalized.
    so while the docs say the are case insensitive, bad programmers have basically changed the docs.

    0 讨论(0)
  • 2020-11-22 03:11

    HTTP header names are case-insensitive, according to RFC 2616:

    4.2:

    Each header field consists of a name followed by a colon (":") and the field value. Field names are case-insensitive.

    (Field values may or may not be case-sensitive.)

    If you trust the major browsers to abide by this, you're all set.


    BTW, unlike most of HTTP, methods (verbs) are case sensitive:

    5.1.1 Method

    The Method token indicates the method to be performed on the
    resource identified by the Request-URI. The method is case-sensitive.

       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
    
    0 讨论(0)
  • 2020-11-22 03:17

    header('Content-type: image/png') did not work with PHP 5.5 serving IE11, as in the image stream was shown as text

    header('Content-Type: image/png') worked, as in the image appeared as an image

    Only difference is the capital 'T'.

    0 讨论(0)
  • 2020-11-22 03:19

    tldr; both HTTP/1.1 and HTTP/2 headers are case-insensitive.

    According to RFC 7230 (HTTP/1.1):

    Each header field consists of a case-insensitive field name followed by a colon (":"), optional leading whitespace, the field value, and optional trailing whitespace.

    https://tools.ietf.org/html/rfc7230#section-3.2

    Also, RFC 7540 (HTTP/2):

    Just as in HTTP/1.x, header field names are strings of ASCII
    characters that are compared in a case-insensitive fashion.

    https://tools.ietf.org/html/rfc7540#section-8.1.2

    0 讨论(0)
  • 2020-11-22 03:22

    The RFC for HTTP (as cited above) dictates that the headers are case-insensitive, however you will find that with certain browsers (I'm looking at you, IE) that capitalizing each of the words tends to be best:

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

    vs

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

    This isn't "HTTP" standard, but just another one of the browser quirks, we as developers, have to think about.

    0 讨论(0)
提交回复
热议问题