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.