Re: WGLC issue: P4 - ETags & conditional requests

On Apr 23, 2012, at 10:47 AM, Ben Niven-Jenkins wrote:

> Hi,
> 
> Apologies that this mail misses the WG LC deadline, in Velocix we're reviewing all the HTTPBIS documents but we're a little behind, hence the late comments, sorry. (we're still reviewing so might have more comments as we work through the documents)
> 
> On page 14 of P4 it states:
> 
>   If none of the entity-tags match, or if "*" is given and no current
>   representation exists, the server MUST NOT perform the requested
>   method.  Instead, the server MUST respond with the 412 (Precondition
>   Failed) status code.
> 
> This appears to apply to intermediates, but If-Match has a problem
> here that If-Unmodified-Since does not. If a proxy has a cached
> entity which has a newer Last-Modified timestamp it *knows* that
> the conditional has failed and can generate the required
> 412 Precondition Failed response itself. Otherwise it can satisfy
> the request from cache. Or relay if there is no current cached
> version.
> 
> But because multiple responses with different ETags may exist then a cache receiving If-Match with one etag, when it has a different etag cached, can not know for sure that the request etag does not exist. If it were to respond with a 412 status it would effectively be preventing the use of that conditional.
> 
> It would appear that the only two options available to an intermediate are to satisfy the request in the case of a known match, and relay upstream in all other cases (which would be in conflict with the spec as quoted above).
> 
> Thanks
> Ben

Thanks for your comments (there is plenty of time left, so keep them coming).

Yes, that appears to be a bug in the spec.  Only an origin server can respond 412.

....Roy

Received on Monday, 23 April 2012 19:12:31 UTC