HTTP 1.1 header incompatibility
Ross Patterson (ROSSP@ss1.reston.vmd.sterling.com)
Fri, 9 Oct 1998 17:16:26 +0100 (BST)
Section 4.2 "Message Headers" in RFC 1945 (HTTP 1.0) reads:
"HTTP header fields, which include General-Header (Section 4.3),
Request-Header (Section 5.2), 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 [7]. Each header field
consists of a name followed immediately by a colon (":"), a single
space (SP) character, and the field value."
The same section in the current HTTP 1.1 spec reads:
"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. The field value MAY be preceded
by any amount of LWS, though a single SP is preferred."
In the process of liberalizing the syntax to allow LWS where SP was
previously required, we have made the whitespace optional altogether. I
don't believe this was intentional, as such a basic syntactic change
would require incrementing the HTTP-Version major level (due to the
incompatibility with HTTP 1.0). I suggest rewording the middle sentence
to say something like the following, and leaving the last sentence
intact:
"Each header field consists of a name followed by a colon (":"),
linear whitespace (LWS), and the field value."
I know this sounds like a nit, but I have a customer citing this
reference as allowing something like "If-Modified-Since:Sat, 29 Oct 1994
19:43:31 GMT", and I'd rather thank him for helping us clean it up than
tell him the HTTP 1.1 spec is in error.
Ross Patterson
VM Software Division
Sterling Software, Inc.