- From: Robert S. Thau <rst@ai.mit.edu>
- Date: Thu, 6 Jun 1996 10:42:26 -0400
- To: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Well, I *finally* (belatedly) did a serious review of the draft-04 text. There still may be a few problems... here are two items in particular I picked up (one big item and another which is small, but --- IMHO --- serious). 1) Section 14.7 says that a proxy MUST NOT edit the Allow: header value. Section 9.2 says that it MUST, at least in the specific case of a response to an OPTIONS request. Who's right? 2) The wording in section 10.3.5 on what headers should be sent with a 304 is an improvement, but I still can't figure out what *exactly* a conforming server is supposed to do. The three conditions there are: a) A response MUST include any values which might differ from those which were received with a prior 200 response. b) A response MUST include any values that caches use for matching requests and responses with cache entries. c) A response SHOULD NOT include anything "which cannot possibly have changed." These criteria don't seem entirely consistent with the examples of "relevant" headers given in the text. For instance, I'm not sure which of criteria (a) or (b) makes "Server" a particularly relevant header, especially given that in almost all cases, (c) will apply. However, it is the rules themselves that are normative, and my main concern is with them. To begin with, (b) and (c) seem to be partially contradictory --- the implication of (b) seems to be that even if a header that caches use for checking matches to cache entries cannot possibly have changed, the 304 response should include it anyway. A more serious concern is that I can't figure out how, say, a member of a chain of HTTP/1.1 caches sandwiched between an HTTP/1.2 user agent and origin server is supposed to determine exactly which headers meet criterion (b). For example, "Alternates" might be a reasonable bet, but this is a manner of interpretation, since as far as I can tell the current draft does not otherwise specify any normative behavior at all for an HTTP/1.1 cache in receipt of an Alternates header. In any case, the working group might change the spelling of "Alternates" to "Variants", or to add some sort of more general Negotiation-control header which subsumes it. Given that multiple incompatible content negotiation proposals have already come out of this WG over the past year or so, I as an implementor don't feel comfortable excluding either possibility, which makes it very difficult to determine how I should treat any particular header in any code which I might be writing now. Accordingly, I'd like to respectfully suggest that change here is needed. As a strawman, here's a set of rules that I personally would be a little more comfortable with (though it's entirely possible that they have problems which have escaped my cursory review): a') A response MUST include any values which might differ from those which were received with a prior 200 response. b') If a response comes from an origin server directly, it MUST include any values that caches use for matching requests and responses with cache entries by caches of its protocol version or better, and SHOULD NOT include any other values. c') If a response comes from a proxy, it MUST include all values received, *except* those on an explicit, normative stop-list. (I understand that some of you don't like normative lists. However, a proxy cannot in general know the protocol version of the origin server, since the response may have been downgraded by an intermediate proxy. Likewise, a caching proxy which has to generate a 304 for a resource which is fresh in its cache may never have seen a validating 304 from downstream for that resource. Given all that, passing along everything not on a normative stop list is the only thing I can personally think of that allows new negotiation-related headers to be added to future versions of the protocol). There is some more minor stuff (e.g., certain questions about responses from caches in New Zealand and elsewhere which don't always allow clients to force the cache to validate an entry), but I'll save those for later. rst
Received on Thursday, 6 June 1996 07:45:47 UTC