- From: Josh Cohen <josh@netscape.com>
- Date: Thu, 07 Aug 1997 22:30:20 -0700
- To: HTTP Working Group <http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com>
- Message-Id: <33EAAEEC.6DA542E8@netscape.com>
-- ----------------------------------------------------------------------------- Josh Cohen <josh@netscape.com> Netscape Communications Corp. http://people.netscape.com/josh/ "You can land on the sun, but only at night"
Greetings, I apologize for the lateness in posting this to the list. If you view the open issues for HTTP/1.1 and the agenda for the Munich meeting, you'll notice an issue called 'RE-VERSION'. After discussion with the HTTP editors, I was encouraged to raise this issue on the list and as an open item for HTTP. The RE-VERSION essentiall boils down to the meaning of the version in an HTTP/1.1 response. I, and the editors, understand that this issue was heatedly and deeply discussed previously, however, over the course of time, I do not beleive that the previous resolution is sufficient. To summarize, the draft now indicates that the response version should be the highest version supported by the server, NOT the version of the actual HTTP response. My problem with this is based on the assumption in the draft which dictates that the response version is hop-by-hop. Overall, I beleive that the response version should indicate the version of the response message. The problems encountered so far, in addition to any confusion because the 'response version', isnt the response version, are as follows: A client sends a 1.0 request, a 1.1 server responds with a 1.1 response. ( minus certain http/1.1 features/headers). GET http://foo/foo.html HTTP/1.0 blah: blahvalue HTTP/1.1 200 Ok blah: blahvalue content... When going through a proxy, how is the proxy supposed to maintain the hop-by-hop nature of the responses? Worse, if a 1.0 proxy is in the stream, it will blindly pass the 1.1 response code back to the client, and clearly fails to honor the hop-by-hop nature of the response. (this is the case with squid, netscape proxy, and presumable others) Previously, the 1.0 didnt clearly define what the behaviour should be in this case. On deciding what to send in a 1.1 response to a 1.0 client, there is no canonical list of things which a server must not send when sending a 1.1 labeled response to a 1.0 server. There will surely be more than just chunked encoding.. This seems like a nightmare for proxy/server implementors dictating constant maintenance releases to block new server reponse features/headers from being sent to 1.0 clients. ( how can it be prepared to block something which hasn't been invented yet?) The only reason I could find in the previous discussion for this behavior was to allow partial implementations to take advantage of some 1.1 features, but not all. These days, since a great deal of the most contentious features have been separated from the core http/1.1 draft, I dont think its too much to ask for a reasonably compliant implementation that can at least deal with all the core http/1.1 headers/features. Lets say Im implement a client that understands cache-control ( IMHO a valuable 1.1 feature ), but is 1.0 otherwise. Should a server send a cache-control: directive or the usual ugliness of removing the last-modified: header? (or some other way). Or should it send both? (subverting the usefulness of the cache-control making it redundant) Finally, with things the way they are, does the response version actually mean anything useful? How useful is knowing what the highest version supported by the server? Wouldnt knowing the version of the actual response message be more useful and less ambiguous? The way I see it we have these options: 1) leave as-is, keeping the broken hop-by-hop behaviour ( but vigorously specify what must not be sent to a 1.0 client in a 1.1 labeled response ) 2) make the response version = the request version. 3) create an additional 'response-version: ' header to indicate the message version in use. 4) keep the same rules in the draft, but make our version 2.0. ( which will mean that the server must send a 1.x response to a 1.x client ) Personally, I think the right thing to do is #2. Yes, this will have some effect on the current implementations. However: 1) the effect shouldnt put them in any worse position than they already are. ( still broken ) 2) The IETF process draft/draft standard rfc/proposed standard rfc etc, is meant to allow changes. Implementing a draft implies that changes will need to be made. (Im sure Im missing some issues or other stuff.. feel free to comment :)
Received on Thursday, 7 August 1997 22:32:23 UTC