Re: HTTP 1.1 issue 16: 14.26 If-None-Match

At 14:58 11/11/98 PST, Jeffrey Mogul wrote:
>Ross Patterson writes:
>
>    In section 14.26 "If-None-Match", the statements
>    
>       "If "*" is given and no current entity exists, then the
>       server MAY perform the requested method as if the
>       If-None-Match header field did not exist."
>
>    and
>
>       "The meaning of "If-None-Match: *" is that the method
>       MUST NOT be performed if the representation selected by
>       the origin server (or by a cache, possibly using the Vary
>       mechanism, see section 14.44) exists, and SHOULD be
>       performed if the representation does not exist."
>
>    conflict on the topic of "If-None-Match: *". The former
>    asserts that the server MAY perform the request, the latter
>    that it SHOULD.  I think the MAY is correct.
>
>Hmm.  I confess that I no longer remember all of the
>discussion behind this, but I lean towards SHOULD.

I think it actually is correct although the logic maybe more complex than
need be:

*If* there is an "If-None-Match: *"  header *and* no representation exists
then the server can either a) discard the "If-None-Match: *" or b) use it
according to the algorithm outlined in the second paragraph above. Assuming
that your example below SHOULD work, then the result should be the same.

However, I am not sure that a) in fact makes sense as presumably the server
would have used the existence of the "If-None-Match: *" header to check for
existing representations before finding out that it could have ignored it.
This is like saying: "After you have used it you may find out that you
don't need it, but that's OK."

Therefore, I would suggest that the first paragraph is simply removed. The
second handles all cases as far as I can see.

>Consider the request:
>
>	PUT /foo.data HTTP/1.1
>	Host: whatever.com
>	Content-Length: 0

Henrik

Received on Wednesday, 11 November 1998 16:52:20 UTC