Takeaways
- None of the ranges in the request's
Range
header field overlap the current extent of the selected resource or that the set of ranges requested has been rejected due to invalid ranges or an excessive request of small or overlapping ranges. - For byte ranges, failing to overlap the current extent means that the first-byte-pos of all of the byte-range-spec values were greater than the current length of the selected representation.
- When this status code is generated in response to a byte-range request, the sender should generate a
Content-Range
header field specifying the current length of the selected representation.
Example
HTTP/1.1 416 Range Not Satisfiable
Date: Fri, 20 Jan 2012 15:41:54 GMT
Content-Range: bytes */47022
NoteBecause servers are free to ignore
Range
, many implementations will simply respond with the entire selected representation in a200 OK
response. That is partly because most clients are prepared to receive a200 OK
to complete the task (albeit less efficiently) and partly because clients might not stop making an invalid partial request until they have received a complete representation. Thus, clients cannot depend on receiving a416 Range Not Satisfiable
response even when it is most appropriate.
Information
The server cannot serve the requested ranges. The most likely reason is that the document doesn't contain such ranges, or that the Range
header value, though syntactically correct, doesn't make sense.
The 416
response message contains a Content-Range
indicating an unsatisfied range (that is a '*'
) followed by a '/'
and the current length of the resource. E.g. Content-Range: bytes */12777
Faced with this error, browsers usually either abort the operation (for example, a download will be considered as non-resumable) or ask for the whole document again.