RFC 2616 BNF defaults to case-insensitive for string literals:
"literal"
Quotation marks surround literal text. Unless stated otherwise,
the text is case-insensitive.
but the HTTP version string is defined as
The version of an HTTP message is indicated by an HTTP-Version field
in the first line of the message.
HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
Note that the major and minor numbers MUST be treated as separate
integers and that each MAY be incremented higher than a single digit.
Thus, HTTP/2.4 is a lower version than HTTP/2.13, which in turn is
lower than HTTP/12.3. Leading zeros MUST be ignored by recipients and
MUST NOT be sent.
Personally, I never had any intention that the "HTTP" be case-insensitive,
and I am not aware of any clients that send it lowercase, nor any server
that would accept it as lowercase. Doing so is a waste of cycles. So,
I'd like that paragraph above to say:
The version of an HTTP message is indicated by an HTTP-Version field
in the first line of the message. HTTP-Version is case-sensitive.
Servers would still be allowed to process it as case-insensitive under
the general robustness principle, but clients are no longer given the
excuse of "But it says in the standard ...".
Cheers,
Roy T. Fielding, Chief Scientist, Day Software
(roy.fielding@day.com) <http://www.day.com/>
Co-founder, The Apache Software Foundation
(fielding@apache.org) <http://www.apache.org/>