Re: HTTP 1.1 issue 16: 14.26 If-None-Match
Henrik Frystyk Nielsen (frystyk@w3.org)
Wed, 11 Nov 1998 19:49:10 -0500
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