- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Wed, 25 Feb 98 18:36:22 PST
- To: http-wg@cuckoo.hpl.hp.com
[This is an excerpt of the relevant parts of http://www.ics.uci.edu/pub/ietf/http/hypermail/1998q1/0408.html with some slight rephrasings to make it self-contained, but does contain any new material.] In this example GET /foo.html HTTP/1.1 Host: research.bell-labs.com If-Match: "xyzzy" If-Unmodified-Since: Wed, 25 Feb 98 14:51:40 GMT there is a question as to whether this means that the request is performed if all of the "If-*" conditions are met, or if at least one of them is met. The language in the spec for If-Match is: If none of the entity tags match ..., the server MUST NOT perform the requested method, and MUST return a 412 (Precondition Failed) response. [...] If the request would, without the If-Match header field, result in anything other than a 2xx status, then the If-Match header MUST be ignored. and the language for If-Unmodified-Since is: If the requested variant has been modified since the specified time, the server MUST NOT perform the requested operation, and MUST return a 412 (Precondition Failed). If the request normally (i.e., without the If-Unmodified-Since header) would result in anything other than a 2xx status, the If-Unmodified-Since header should be ignored. It turns out that there is a contradiction here: if none of the entity tags match AND if the variant has been modified, then each header "wants" to cause us to return 412, but the rules for each header individually says "ignore me because my buddy wants us to return 412". So I think the phrase "2xx status" in both quotes above should be "2xx or 412 status". With this contradiction resolved, the meaning of the example is clear: the method is performed if at least one entity tag from the If-Match header field matches the current entity tag, AND if the resource's modification date matches the value of the If-Unmodified-Since header field. Specifically, in rev-02: (1) In section 14.25 (If-Match), change: If the request would, without the If-Match header field, result in anything other than a 2xx status, then the If-Match header MUST be ignored. to If the request would, without the If-Match header field, result in anything other than a 2xx or 412 status, then the If-Match header MUST be ignored. (2) In section 14.28 (If-Unmodified-Since), change: If the request normally (i.e., without the If-Unmodified-Since header) would result in anything other than a 2xx status, the If-Unmodified-Since header should be ignored. to If the request normally (i.e., without the If-Unmodified-Since header) would result in anything other than a 2xx or 412 status, the If-Unmodified-Since header should be ignored. -Jeff
Received on Wednesday, 25 February 1998 18:38:48 UTC