On Mon, 2 Jun 2003, chris_pressey wrote:
> I'm writing a minimal HTTP/1.1 origin server and I'm striving for
> conditional compliance.
>
> I have a couple of newbie questions about whether Conditional GET
> (and Partial GET) are required or merely recommended.
There is no clear/single MUST that says "the server MUST support a
conditional or partial GET", I think. However, you may still get a
practical answer to your questions. I would just recommend looking at
the problem from a different point of view:
* Returning 412s for mismatched If-Match is a MUST (14.24).
Thus, you cannot ignore If-Match.
* Returning 304s for matching If-Modified-Since is a
SHOULD (Section 14.25). Thus, you can ignore
If-Modified-Since in this context.
* Returning 200s/304s for matching If-None-Match is
a MUST (14.26). Thus, you cannot ignore If-None-Match.
* If-Range MUST be ignored if the server does not
support the sub-range operation (14.27). Thus, you
can ignore If-Range. (Same for Range, BTW).
* Returning 412s for mismatching If-Unmodified-Since
is a MUST (14.28). Thus, you cannot ignore
If-Unmodified-Since.
* Returning 304s for mismatching If-Modified-Since
while other If-* headers match is a MUST NOT (13.3.4).
Thus, you cannot ignore If-Modified-Since if other
conditional headers are present. This rule probably
excludes If-Range since there is a more specific
MUST that says you can ignore it.
At this point, we can conclude that you can ignore If-Range, but must
support/recognize/honor all other If-* headers if you want to be
conditionally compliant in all cases. However, you can return 200 OK
responses to matching If-Modified-Since requests as long as those
requests do not contain other If-* headers.
HTH,
Alex.
--
| HTTP performance - Web Polygraph benchmark
www.measurement-factory.com | HTTP compliance+ - Co-Advisor test suite
| all of the above - PolyBox appliance