Are HTTP headers (Content-Type, &c.) case-sensitive? [duplicate]

Case-insensitive.

Hypertext Transfer Protocol -- HTTP/1.1:

4.2 Message Headers

HTTP header fields, which include general-header (section 4.5), request-header (section 5.3), response-header (section 6.2), and entity-header (section 7.1) fields, follow the same generic format as that given in Section 3.1 of RFC 822 [9]. Each header field consists of a name followed by a colon (":") and the field value. Field names are case-insensitive.


Looks like the MIME type in a Content-type header value is case-insensitive, so application/PDF and application/pdf are equivalent. It does say parameter values are case-sensitive, so technically "text/html; charset=UTF-8" is not equivalent to "text/html; charset=utf-8". But that's not a good example because http://www.w3.org/TR/html4/charset.html#h-5.2.1 says "Names for character encodings are case-insensitive".

http://www.w3.org/Protocols/rfc1341/4_Content-Type.html

The type, subtype, and parameter names are not case sensitive. For example, TEXT, Text, and TeXt are all equivalent. Parameter values are normally case sensitive, but certain parameters are interpreted to be case- insensitive, depending on the intended use. (For example, multipart boundaries are case-sensitive, but the "access- type" for message/External-body is not case-sensitive.)