If-None-Match + Range

Suppose a GET request contains `If-None-Match` and `Range` headers;
the If-None-Match condition fails, the Range is unsatisfiable. Which
code should be returned, 304 or 416? There are conflicting statements
in the draft:

Part 4, section 3.2.

   If the request would, without the If-None-Match header field, result
   in anything other than a 2xx or 304 status code, then the If-None-
   Match header field MUST be ignored.

(that means 416 should be returned)

Part 5, section 5.4.2.

   o  The presence of a Range header field in a conditional GET (a
      request using one or both of If-Modified-Since and If-None-Match,
      or one or both of If-Unmodified-Since and If-Match) modifies what
      is returned if the GET is otherwise successful and the condition
      is true.  It does not affect the 304 (Not Modified) response
      returned if the conditional is false.

(that means 304 should be returned)

If the server decides that such a bad request is not worth honoring,
which error code should be returned to client?

Best Regards,
Zhong Yu

Received on Friday, 13 January 2012 19:28:35 UTC