Byte Ranges
In HTTP 1.1, the client does not have to retrieve the entire
entity-body at once, but can get it in pieces, if the server allows
it to do so. If the server declares that it supports byte ranges
using the Accept-Ranges header:
HTTP/1.1 200 OK [Other headers here] Accept-Ranges: bytes
The client can then request the data in pieces. For example:
GET /largefile.html HTTP/1.1 [Other headers here] Range: 0-65535
When the server returns the specified range, it includes a
Content-range header
to indicate which portion of the document is being sent, and also to
tell the client how long the file is:
HTTP/1.1 200 OK [Other headers here] Content-range: 0-65535/83028576
For caching purposes, a client can use the
If-Range header along
with Range
to request an updated portion of the
document only if the document has been changed. Here is an example:
GET /largefile.html HTTP/1.1 [Other headers here] If-Range: Mon, 02 May 1996 04:51:00 GMT Range: 0-65535
The If-Range header can use either a last modified
date or an entity tag to verify that the document is still the same.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access