Re: HTTP version number

> Roy T. Fielding:
>>Koen writes:
>>> draft-kristol-http-state-mgmt-00 is not orthogonal to the HTTP version
>>> number: see section 10.  Servers need the version number to know
>>> whether they should send an old Netscape format Set-Cookie header or a
>>> new HTTP/1.1 Set-Cookie header.
>>
>>This won't work.  For example
>>
>>     1.0 UA ---------> 1.1 Proxy ---------> 1.0 Origin Server
>>
>>will result in a 1.1 cookie being sent to a 1.0 user agent.
> 
> Isn't the 1.1 proxy required to convert the 1.1 response from the
> server to a 1.0 response before sending it to the user agent?  This
> conversion would presumably also convert the 1.1 cookie in the
> Set-Cookie header to a 1.0 cookie.  At least this is how I read
> Section 3.1 of the draft 1.1 spec.

Good question, but the answer is no (this used to be clear in the draft,
but I deleted the original wording because somebody said it
was overspecifying future versions -- *sigh*).

No conversion occurs within the same major version number.
In fact, that is the main distinguisher between the major and
minor version changes.  Any 1.x proxy can safely forward any
1.x request or response without changing anything except
the Request-Line/Status-Line (it always sends its own native version)
and the Connection, Forwarded, and Host header fields.

Visualizing that ....

              1.0                  1.1
    1.0 UA ---------> 1.1 Proxy ---------> 1.0 Origin Server
           <---------           <---------
              1.1                  1.0

Likewise,

              1.0                  1.1
    1.0 UA ---------> 1.1 Proxy ---------> 1.1 Origin Server
           <---------           <---------
              1.1                  1.1

              1.1                  1.1
    1.1 UA ---------> 1.1 Proxy ---------> 1.0 Origin Server
           <---------           <---------
              1.1                  1.0

              1.1                  1.0
    1.1 UA ---------> 1.0 Proxy ---------> 1.1 Origin Server
           <---------           <---------
              1.0                  1.1

>>The only features of HTTP that can depend on a minor version number
>>change are those that are interpreted by neighbors in the communication.
> 
> I'm not sure what you means by this; I hope you don't mean "when
> passing on a 1.1 response to a 1.0 client, a proxy may convert the 1.1
> response to a 1.0 response by rewriting the version number in the
> response status line".

Ummm, not exactly.  All messages within the same major version
(e.g., HTTP/1.x) must be sent with the sending application's native
version supported.  So, a HTTP/1.1 proxy will always forward a received
HTTP/1.0 message with a new version of HTTP/1.1 the Status/Request-Line.

I'd say more, but its time to register.

 ...Roy T. Fielding
    Department of Information & Computer Science    (fielding@ics.uci.edu)
    University of California, Irvine, CA 92717-3425    fax:+1(714)824-4056
    http://www.ics.uci.edu/~fielding/

Received on Monday, 4 March 1996 08:27:09 UTC