Created
March 25, 2015 00:09
-
-
Save rcombs/f2dc63901da537cf31dd to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Network Working Group J. R. Combs, Ed. | |
Internet-Draft Plex | |
Updates: 7233 March 24, 2015 | |
(if approved) | |
Intended status: Standards Track | |
Expires: September 25, 2015 | |
HTTP/1.1: Range Responses of Indeterminate Length | |
draft-combs-http-indeterminate-range-00 | |
Status of this Memo | |
By submitting this Internet-Draft, each author represents that any | |
applicable patent or other IPR claims of which he or she is aware | |
have been or will be disclosed, and any of which he or she becomes | |
aware will be disclosed, in accordance with Section 6 of BCP 79. | |
Internet-Drafts are working documents of the Internet Engineering | |
Task Force (IETF), its areas, and its working groups. Note that | |
other groups may also distribute working documents as Internet- | |
Drafts. | |
Internet-Drafts are draft documents valid for a maximum of six months | |
and may be updated, replaced, or obsoleted by other documents at any | |
time. It is inappropriate to use Internet-Drafts as reference | |
material or to cite them other than as "work in progress." | |
The list of current Internet-Drafts can be accessed at | |
http://www.ietf.org/ietf/1id-abstracts.txt. | |
The list of Internet-Draft Shadow Directories can be accessed at | |
http://www.ietf.org/shadow.html. | |
This Internet-Draft will expire on September 25, 2015. | |
Copyright Notice | |
Copyright (C) The IETF Trust (2007). | |
Combs Expires September 25, 2015 [Page 1] | |
Internet-Draft HTTP/1.1 March 2015 | |
Abstract | |
The Hypertext Transfer Protocol (HTTP) is an application-level | |
protocol for distributed, collaborative, hypermedia information | |
systems. HTTP has been in use by the World Wide Web global | |
information initiative since 1990. This document updates Part 5 of the | |
eight-part specification that defines the protocol referred to as | |
"HTTP/1.1". Part 5 defines range-specific requests and the rules for | |
constructing and combining responses to those requests. This document | |
adds support for using range requests with resources of indeterminate | |
size. | |
Table of Contents | |
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |
2. Header Field Definitions . . . . . . . . . . . . . . . . . . . 3 | |
2.1. Accept-Indefinite-Ranges . . . . . . . . . . . . . . . . . 3 | |
2.2. Content-Range . . . . . . . . . . . . . . . . . . . . . . 3 | |
3. Security Considerations . . . . . . . . . . . . . . . . . . . 5 | |
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5 | |
5. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 5 | |
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 5 | |
Intellectual Property and Copyright Statements . . . . . . . . . 6 | |
Combs Expires September 25, 2015 [Page 2] | |
Internet-Draft HTTP/1.1 March 2015 | |
1. Introduction | |
This document will define changes to RFC 7233 HTTP/1.1 designed to | |
allow range requests to be used to retrieve parts of resources whose | |
lengths are unknown at the time of the first request. | |
2. Header Field Definitions | |
This section defines the syntax and semantics of all standard | |
HTTP/1.1 header fields. For entity-header fields, both sender and | |
recipient refer to either the client or the server, depending on who | |
sends and who receives the entity. | |
2.1. Accept-Indefinite-Ranges | |
The Accept-Indefinite-Ranges request-header field allows the client | |
to indicate its acceptance of indefinite-sized range requests for a | |
resource: | |
Accept-Indefinite-Ranges = "Accept-Indefinite-Ranges" ":" "1" | |
Servers MUST NOT generate indefinite-sized byte-range replies without | |
having received this header for the resource involved. | |
2.2. Content-Range | |
The Content-Range entity-header is sent with a partial entity-body to | |
specify where in the full entity-body the partial body should be | |
applied. This section updates Section 4.2 of RFC 7233. | |
Content-Range = "Content-Range" ":" content-range-spec | |
content-range-spec = byte-content-range-spec | |
byte-content-range-spec = bytes-unit SP | |
byte-range-resp-spec "/" | |
( instance-length | "*" ) | |
byte-range-resp-spec = (first-byte-pos "-" last-byte-pos) | |
| "*" | |
instance-length = 1*DIGIT | |
first-byte-pos = 1*DIGIT | |
last-byte-pos = ( 1*DIGIT | "*" ) | |
Combs Expires September 25, 2015 [Page 3] | |
Internet-Draft HTTP/1.1 March 2015 | |
The header SHOULD indicate the total length of the full entity-body, | |
unless this length is unknown or difficult to determine. The | |
asterisk "*" character as instance-length's value means that the | |
instance-length is unknown at the time when the response was generated. | |
The asterisk "*" character as last-byte-pos's value means that the | |
length of the response is unknown or difficult to determine. | |
Unlike byte-ranges-specifier values (see Section 6.4.1), a byte- | |
range-resp-spec MUST only specify one range, and MUST contain | |
an absolute byte positions for the first byte of the range. The | |
last-byte-pos MAY be set to "*" only if the client has sent the | |
Accept-Indefinite-Ranges header for the resource involved. | |
If the server returns a last-byte-pos of "*", it MUST send the entire | |
resource in the response body, and MUST use the RFC 7230 Chunked | |
Transfer-Encoding. | |
A byte-content-range-spec with a byte-range-resp-spec whose last- | |
byte-pos value is less than its first-byte-pos value, or whose | |
instance-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. | |
A server sending a response with status code 416 (Requested range not | |
satisfiable) SHOULD include a Content-Range field with a byte-range- | |
resp-spec of "*". The instance-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 byte-range- | |
resp-spec of "*". | |
Examples of byte-content-range-spec values, assuming that the entity | |
contains a total of 1234 bytes: | |
o The first 500 bytes: | |
bytes 0-499/1234 | |
o The second 500 bytes: | |
bytes 500-999/1234 | |
o All except for the first 500 bytes: | |
bytes 500-1233/1234 | |
Combs Expires September 25, 2015 [Page 4] | |
Internet-Draft HTTP/1.1 March 2015 | |
o The last 500 bytes: | |
bytes 734-1233/1234 | |
o The last 500 bytes, Chunked, where the length was unknown: | |
bytes 734-*/* | |
3. Security Considerations | |
No additional security considerations have been identified beyond | |
those applicable to HTTP in general [Part 1]. | |
4. IANA Considerations | |
TBD | |
5. Acknowledgments | |
Parts of this document are based on RFC 7233 and its drafts. | |
Authors' Addresses | |
J. Rodger Combs (editor) | |
Plex, Inc. | |
Email: [email protected] | |
Combs Expires September 25, 2015 [Page 5] | |
Internet-Draft HTTP/1.1 March 2015 | |
Full Copyright Statement | |
Copyright (C) The IETF Trust (2007). | |
This document is subject to the rights, licenses and restrictions | |
contained in BCP 78, and except as set forth therein, the authors | |
retain all their rights. | |
This document and the information contained herein are provided on an | |
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | |
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | |
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | |
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |
Intellectual Property | |
The IETF takes no position regarding the validity or scope of any | |
Intellectual Property Rights or other rights that might be claimed to | |
pertain to the implementation or use of the technology described in | |
this document or the extent to which any license under such rights | |
might or might not be available; nor does it represent that it has | |
made any independent effort to identify any such rights. Information | |
on the procedures with respect to rights in RFC documents can be | |
found in BCP 78 and BCP 79. | |
Copies of IPR disclosures made to the IETF Secretariat and any | |
assurances of licenses to be made available, or the result of an | |
attempt made to obtain a general license or permission for the use of | |
such proprietary rights by implementers or users of this | |
specification can be obtained from the IETF on-line IPR repository at | |
http://www.ietf.org/ipr. | |
The IETF invites any interested party to bring to its attention any | |
copyrights, patents or patent applications, or other proprietary | |
rights that may cover technology that may be required to implement | |
this standard. Please address the information to the IETF at | |
[email protected]. | |
Acknowledgment | |
Funding for the RFC Editor function is provided by the IETF | |
Administrative Support Activity (IASA). | |
Combs Expires September 25, 2015 [Page 6] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment