- From: Jeffrey Mogul <mogul@pa.dec.com>
- Date: Mon, 21 Jul 97 11:26:29 MDT
- To: http-wg%cuckoo.hpl.hp.com@hplb.hpl.hp.com
Reference:
http://www.w3.org/pub/WWW/Protocols/HTTP/Issues/#RANGE-ERROR
Summary of proposed solution:
Add 416 error with Content-Range showing the total content length.
Slight modifications to specification of Content-Range.
The editorial group seems to agree that there should be a new
status code for this purpose. There is somewhat less consensus
over whether it's important to tell the client the current
length of the requested entity, and (if so) how to do so.
This proposal incorporates the simplest way I could think
of to provide that information.
Proposed solution:
(1) New status code:
10.4.17 416 Requested range not valid
A server SHOULD return a response with this status code if a
request included a Range request-header field (section 14.36),
and none of the range-specifier values in this field overlap
the current extent of the selected resource, and the request
did not include an If-Range request-header field. (For
byte-ranges, this means that the first-byte-pos of all of the
byte-range-spec values was greater than the current length of
the selected resource.)
When this status code is returned for a byte-range request, the
response MUST include a Content-Range entity-header field
specifying the current length of the selected resource (see
section 14.17). This response MUST NOT use the
multipart/byteranges content-type.
[Note to editor: verify that status code 416 is not multiply assigned.]
(2) Changes to 14.17 Content-Range:
(a) Replace:
content-range-spec = byte-content-range-spec
with
content-range-spec = byte-content-range-spec | "*"
(b) After this paragraph:
A byte-content-range-spec whose last-byte-pos value is less than its
first-byte-pos value, or whose entity-length value is less than or
equal to its last-byte-pos value, is invalid. The recipient of an
invalid byte-content-range-spec MUST ignore it and any content
transferred along with it.
Add this new paragraph:
A server sending a response with status code 416 (Requested range
not valid) SHOULD include a Content-range field with a
content-range-spec of "*". The entity-length specifies the current
length of the selected resource. A response with status code 206
(Partial Content) MUST NOT include a Content-range field with a
content-range-spec of "*".
(c) Replace
If the server ignores a byte-range-spec because it is invalid, the
server should treat the request as if the invalid Range header field
did not exist. (Normally, this means return a 200 response containing
the full entity). The reason is that the only time a client will make
such an invalid request is when the entity is smaller than the entity
retrieved by a prior request.
with
If the server ignores a byte-range-spec because it is syntactically
invalid, the server should treat the request as if the invalid Range
header field did not exist. (Normally, this means returning a 200
response containing the full entity.)
If the server receives a request (other than one including an
If-Range request-header field) with an unsatisfiable Range
request-header field (that is, all of whose byte-range-spec values
have a first-byte-pos value greater than the current length of the
selected resource), it SHOULD return a response code of 416
(Requested range not valid) (section 10.4.17).
Note: clients cannot depend on servers to send a 416 (Requested
range not valid) response instead of a 200 (OK) response for
an unsatisfiable Range request-header, since not all servers
implement this request-header.
[End of changes]
-Jeff
Received on Monday, 21 July 1997 11:36:57 UTC