Changeset 2143 for draft-ietf-httpbis/latest/p5-range.html
- Timestamp:
- 20/01/13 14:57:02 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p5-range.html
r2142 r2143 474 474 <link rel="Chapter" title="2 Range Units" href="#rfc.section.2"> 475 475 <link rel="Chapter" title="3 Range Requests" href="#rfc.section.3"> 476 <link rel="Chapter" title="4 Status Code Definitions" href="#rfc.section.4"> 477 <link rel="Chapter" title="5 Responses to a Range Request" href="#rfc.section.5"> 478 <link rel="Chapter" title="6 IANA Considerations" href="#rfc.section.6"> 479 <link rel="Chapter" title="7 Security Considerations" href="#rfc.section.7"> 480 <link rel="Chapter" title="8 Acknowledgments" href="#rfc.section.8"> 481 <link rel="Chapter" href="#rfc.section.9" title="9 References"> 476 <link rel="Chapter" title="4 Responses to a Range Request" href="#rfc.section.4"> 477 <link rel="Chapter" title="5 IANA Considerations" href="#rfc.section.5"> 478 <link rel="Chapter" title="6 Security Considerations" href="#rfc.section.6"> 479 <link rel="Chapter" title="7 Acknowledgments" href="#rfc.section.7"> 480 <link rel="Chapter" href="#rfc.section.8" title="8 References"> 482 481 <link rel="Appendix" title="A Internet Media Type multipart/byteranges" href="#rfc.section.A"> 483 482 <link rel="Appendix" title="B Changes from RFC 2616" href="#rfc.section.B"> … … 587 586 </ul> 588 587 </li> 589 <li><a href="#rfc.section.4">4.</a> <a href="#status.code.definitions">Status Code Definitions</a><ul> 590 <li><a href="#rfc.section.4.1">4.1</a> <a href="#status.206">206 Partial Content</a></li> 591 <li><a href="#rfc.section.4.2">4.2</a> <a href="#status.416">416 Range Not Satisfiable</a></li> 588 <li><a href="#rfc.section.4">4.</a> <a href="#range.response">Responses to a Range Request</a><ul> 589 <li><a href="#rfc.section.4.1">4.1</a> <a href="#rfc.section.4.1">Response to a Single and Multiple Ranges Request</a></li> 590 <li><a href="#rfc.section.4.2">4.2</a> <a href="#status.206">206 Partial Content</a></li> 591 <li><a href="#rfc.section.4.3">4.3</a> <a href="#status.416">416 Range Not Satisfiable</a></li> 592 <li><a href="#rfc.section.4.4">4.4</a> <a href="#header.content-range">Content-Range</a></li> 593 <li><a href="#rfc.section.4.5">4.5</a> <a href="#combining.byte.ranges">Combining Ranges</a></li> 592 594 </ul> 593 595 </li> 594 <li><a href="#rfc.section.5">5.</a> <a href="#range.response">Responses to a Range Request</a><ul> 595 <li><a href="#rfc.section.5.1">5.1</a> <a href="#rfc.section.5.1">Response to a Single and Multiple Ranges Request</a></li> 596 <li><a href="#rfc.section.5.2">5.2</a> <a href="#header.content-range">Content-Range</a></li> 597 <li><a href="#rfc.section.5.3">5.3</a> <a href="#combining.byte.ranges">Combining Ranges</a></li> 598 </ul> 599 </li> 600 <li><a href="#rfc.section.6">6.</a> <a href="#IANA.considerations">IANA Considerations</a><ul> 601 <li><a href="#rfc.section.6.1">6.1</a> <a href="#range.unit.registry">Range Unit Registry</a><ul> 602 <li><a href="#rfc.section.6.1.1">6.1.1</a> <a href="#range.unit.registry.procedure">Procedure</a></li> 603 <li><a href="#rfc.section.6.1.2">6.1.2</a> <a href="#range.unit.registration">Registrations</a></li> 596 <li><a href="#rfc.section.5">5.</a> <a href="#IANA.considerations">IANA Considerations</a><ul> 597 <li><a href="#rfc.section.5.1">5.1</a> <a href="#range.unit.registry">Range Unit Registry</a><ul> 598 <li><a href="#rfc.section.5.1.1">5.1.1</a> <a href="#range.unit.registry.procedure">Procedure</a></li> 599 <li><a href="#rfc.section.5.1.2">5.1.2</a> <a href="#range.unit.registration">Registrations</a></li> 604 600 </ul> 605 601 </li> 606 <li><a href="#rfc.section. 6.2">6.2</a> <a href="#status.code.registration">Status Code Registration</a></li>607 <li><a href="#rfc.section. 6.3">6.3</a> <a href="#header.field.registration">Header Field Registration</a></li>602 <li><a href="#rfc.section.5.2">5.2</a> <a href="#status.code.registration">Status Code Registration</a></li> 603 <li><a href="#rfc.section.5.3">5.3</a> <a href="#header.field.registration">Header Field Registration</a></li> 608 604 </ul> 609 605 </li> 610 <li><a href="#rfc.section. 7">7.</a> <a href="#security.considerations">Security Considerations</a><ul>611 <li><a href="#rfc.section. 7.1">7.1</a> <a href="#overlapping.ranges">Overlapping Ranges</a></li>606 <li><a href="#rfc.section.6">6.</a> <a href="#security.considerations">Security Considerations</a><ul> 607 <li><a href="#rfc.section.6.1">6.1</a> <a href="#overlapping.ranges">Overlapping Ranges</a></li> 612 608 </ul> 613 609 </li> 614 <li><a href="#rfc.section. 8">8.</a> <a href="#acks">Acknowledgments</a></li>615 <li><a href="#rfc.section. 9">9.</a> <a href="#rfc.references">References</a><ul>616 <li><a href="#rfc.section. 9.1">9.1</a> <a href="#rfc.references.1">Normative References</a></li>617 <li><a href="#rfc.section. 9.2">9.2</a> <a href="#rfc.references.2">Informative References</a></li>610 <li><a href="#rfc.section.7">7.</a> <a href="#acks">Acknowledgments</a></li> 611 <li><a href="#rfc.section.8">8.</a> <a href="#rfc.references">References</a><ul> 612 <li><a href="#rfc.section.8.1">8.1</a> <a href="#rfc.references.1">Normative References</a></li> 613 <li><a href="#rfc.section.8.2">8.2</a> <a href="#rfc.references.2">Informative References</a></li> 618 614 </ul> 619 615 </li> … … 657 653 <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a> <a id="range.units" href="#range.units">Range Units</a></h1> 658 654 <p id="rfc.section.2.p.1">A representation can be partitioned into subranges according to various structural units, depending on the structure inherent 659 in the representation's media type. Such a <dfn>range unit</dfn> can be used in the <a href="#header.range" class="smpl">Range</a> (<a href="#header.range" id="rfc.xref.header.range.1" title="Range">Section 3.1</a>) and <a href="#header.content-range" class="smpl">Content-Range</a> (<a href="#header.content-range" id="rfc.xref.header.content-range.1" title="Content-Range">Section 5.2</a>) header fields to delineate the parts of a representation that are either requested or transferred, respectively.655 in the representation's media type. Such a <dfn>range unit</dfn> can be used in the <a href="#header.range" class="smpl">Range</a> (<a href="#header.range" id="rfc.xref.header.range.1" title="Range">Section 3.1</a>) and <a href="#header.content-range" class="smpl">Content-Range</a> (<a href="#header.content-range" id="rfc.xref.header.content-range.1" title="Content-Range">Section 4.4</a>) header fields to delineate the parts of a representation that are either requested or transferred, respectively. 660 656 </p> 661 657 <div id="rfc.figure.u.1"></div><pre class="inline"><span id="rfc.iref.g.1"></span><span id="rfc.iref.g.2"></span><span id="rfc.iref.g.3"></span> <a href="#range.units" class="smpl">range-unit</a> = <a href="#range.units" class="smpl">bytes-unit</a> / <a href="#range.units" class="smpl">other-range-unit</a> … … 722 718 </ul> 723 719 <h2 id="rfc.section.2.2"><a href="#rfc.section.2.2">2.2</a> <a id="range.units.other" href="#range.units.other">Other Range Units</a></h2> 724 <p id="rfc.section.2.2.p.1">The only range unit defined by HTTP/1.1 is "bytes" (<a href="#byte.ranges" title="Byte Ranges">Section 2.1</a>). Additional units can be defined as described in <a href="#range.unit.registry" title="Range Unit Registry">Section 6.1</a>.720 <p id="rfc.section.2.2.p.1">The only range unit defined by HTTP/1.1 is "bytes" (<a href="#byte.ranges" title="Byte Ranges">Section 2.1</a>). Additional units can be defined as described in <a href="#range.unit.registry" title="Range Unit Registry">Section 5.1</a>. 725 721 </p> 726 722 <div id="rfc.iref.a.1"></div> … … 758 754 </p> 759 755 <p id="rfc.section.3.1.p.7">If all of the preconditions are true, the server supports the Range header field for the target resource, the specified range(s) 760 are syntactically correct (as defined in <a href="#byte.ranges" title="Byte Ranges">Section 2.1</a>), and at least one of the ranges has a non-empty intersection with the current selected representation extent, then the server <em class="bcp14">MAY</em> respond with a status code of <a href="#status.206" class="smpl">206 (Partial Content)</a> and a payload containing one or more partial representations that correspond to those requested, as defined in <a href="#range.response" title="Responses to a Range Request">Section 5</a>.756 are syntactically correct (as defined in <a href="#byte.ranges" title="Byte Ranges">Section 2.1</a>), and at least one of the ranges has a non-empty intersection with the current selected representation extent, then the server <em class="bcp14">MAY</em> respond with a status code of <a href="#status.206" class="smpl">206 (Partial Content)</a> and a payload containing one or more partial representations that correspond to those requested, as defined in <a href="#range.response" title="Responses to a Range Request">Section 4</a>. 761 757 </p> 762 758 <div id="rfc.iref.i.1"></div> … … 781 777 resource, then the server <em class="bcp14">SHOULD</em> send the specified sub-range of the representation using a <a href="#status.206" class="smpl">206 (Partial Content)</a> response. If the validator does not match, then the server <em class="bcp14">SHOULD</em> send the entire representation using a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response. 782 778 </p> 783 <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a> <a id="status.code.definitions" href="#status.code.definitions">Status Code Definitions</a></h1> 784 <div id="rfc.iref.18"></div> 785 <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a> <a id="status.206" href="#status.206">206 Partial Content</a></h2> 786 <p id="rfc.section.4.1.p.1">The <dfn>206 (Partial Content)</dfn> status code indicates that the server has fulfilled the partial GET request for the resource. The request <em class="bcp14">MUST</em> have included a <a href="#header.range" class="smpl">Range</a> header field (<a href="#header.range" id="rfc.xref.header.range.2" title="Range">Section 3.1</a>) indicating the desired range, and <em class="bcp14">MAY</em> have included an <a href="#header.if-range" class="smpl">If-Range</a> header field (<a href="#header.if-range" id="rfc.xref.header.if-range.2" title="If-Range">Section 3.2</a>) to make the request conditional. 787 </p> 788 <p id="rfc.section.4.1.p.2">When a 206 response is generated, the sender <em class="bcp14">MUST</em> generate the following header fields: 789 </p> 790 <ul> 791 <li>Either a <a href="#header.content-range" class="smpl">Content-Range</a> header field (<a href="#header.content-range" id="rfc.xref.header.content-range.2" title="Content-Range">Section 5.2</a>) indicating the range included with this response, or a multipart/byteranges <a href="p2-semantics.html#header.content-type" class="smpl">Content-Type</a> including Content-Range fields for each part. If a <a href="p1-messaging.html#header.content-length" class="smpl">Content-Length</a> header field is present in the response, its value <em class="bcp14">MUST</em> match the actual number of octets transmitted in the message body. 792 </li> 793 <li>Date</li> 794 <li> <a href="p6-cache.html#header.cache-control" class="smpl">Cache-Control</a>, <a href="p4-conditional.html#header.etag" class="smpl">ETag</a>, <a href="p6-cache.html#header.expires" class="smpl">Expires</a>, <a href="p2-semantics.html#header.content-location" class="smpl">Content-Location</a> and/or <a href="p2-semantics.html#header.vary" class="smpl">Vary</a>, if the header field would have been sent in a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response to the same request 795 </li> 796 </ul> 797 <p id="rfc.section.4.1.p.3">If a 206 is generated in response to a request with an <a href="#header.if-range" class="smpl">If-Range</a> header field, the sender <em class="bcp14">SHOULD NOT</em> generate other representation header fields beyond those described above. Otherwise, the sender <em class="bcp14">MUST</em> generate all of the same representation header fields that would have been sent in a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response to the same request. 798 </p> 799 <p id="rfc.section.4.1.p.4">Caches <em class="bcp14">MAY</em> use a heuristic (see <a href="p6-cache.html#heuristic.freshness" title="Calculating Heuristic Freshness">Section 4.1.2</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Caching">[Part6]</cite></a>) to determine freshness for 206 responses. 800 </p> 801 <div id="rfc.iref.18"></div> 802 <h2 id="rfc.section.4.2"><a href="#rfc.section.4.2">4.2</a> <a id="status.416" href="#status.416">416 Range Not Satisfiable</a></h2> 803 <p id="rfc.section.4.2.p.1">The <dfn>416 (Range Not Satisfiable)</dfn> status code indicates that none of the ranges-specifier values in the request's <a href="#header.range" class="smpl">Range</a> header field (<a href="#header.range" id="rfc.xref.header.range.3" title="Range">Section 3.1</a>) overlap the current extent of the selected resource and the request did not include an <a href="#header.if-range" class="smpl">If-Range</a> header field (<a href="#header.if-range" id="rfc.xref.header.if-range.3" title="If-Range">Section 3.2</a>). (For byte-ranges, this means that the first-byte-pos of all of the byte-range-spec values were greater than the current 804 length of the selected representation.) 805 </p> 806 <p id="rfc.section.4.2.p.2">When this status code is sent in response to a byte-range request, the sender <em class="bcp14">SHOULD</em> generate a <a href="#header.content-range" class="smpl">Content-Range</a> header field specifying the current length of the selected representation (see <a href="#header.content-range" id="rfc.xref.header.content-range.3" title="Content-Range">Section 5.2</a>). 807 </p> 808 <div id="rfc.figure.u.15"></div> 809 <p>For example:</p> <pre class="text">HTTP/1.1 416 Range Not Satisfiable 810 Date: Mon, 20 Jan 2012 15:41:54 GMT 811 Content-Range: bytes */47022 812 Content-Type: image/gif 813 </pre><div class="note" id="rfc.section.4.2.p.4"> 814 <p> <b>Note:</b> Clients cannot depend on servers to send a <a href="#status.416" class="smpl">416 (Range Not 815 Satisfiable)</a> response instead of a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response for an unsatisfiable <a href="#header.range" class="smpl">Range</a> header field, since not all servers implement this header field. 816 </p> 817 </div> 818 <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a> <a id="range.response" href="#range.response">Responses to a Range Request</a></h1> 819 <h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a> Response to a Single and Multiple Ranges Request 779 <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a> <a id="range.response" href="#range.response">Responses to a Range Request</a></h1> 780 <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a> Response to a Single and Multiple Ranges Request 820 781 </h2> 821 <p id="rfc.section. 5.1.p.1">When an HTTP message includes the content of a single range (for example, a response to a request for a single range, or to782 <p id="rfc.section.4.1.p.1">When an HTTP message includes the content of a single range (for example, a response to a request for a single range, or to 822 783 a request for a set of ranges that overlap without any holes), this content is transmitted with a <a href="#header.content-range" class="smpl">Content-Range</a> header field, and a <a href="p1-messaging.html#header.content-length" class="smpl">Content-Length</a> header field showing the number of bytes actually transferred. For example, 823 784 </p> 824 <div id="rfc.figure.u.1 6"></div><pre class="text">HTTP/1.1 206 Partial Content785 <div id="rfc.figure.u.15"></div><pre class="text">HTTP/1.1 206 Partial Content 825 786 Date: Wed, 15 Nov 1995 06:25:24 GMT 826 787 Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT … … 828 789 Content-Length: 26012 829 790 Content-Type: image/gif 830 </pre><p id="rfc.section. 5.1.p.3">When an HTTP message includes the content of multiple ranges (for example, a response to a request for multiple non-overlapping791 </pre><p id="rfc.section.4.1.p.3">When an HTTP message includes the content of multiple ranges (for example, a response to a request for multiple non-overlapping 831 792 ranges), these are transmitted as a multipart message. The multipart media type used for this purpose is "multipart/byteranges" 832 793 as defined in <a href="#internet.media.type.multipart.byteranges" title="Internet Media Type multipart/byteranges">Appendix A</a>. 833 794 </p> 834 <p id="rfc.section.5.1.p.4">A server <em class="bcp14">MAY</em> combine requested ranges when those ranges are overlapping (see <a href="#overlapping.ranges" title="Overlapping Ranges">Section 7.1</a>). 835 </p> 836 <p id="rfc.section.5.1.p.5">A response to a request for a single range <em class="bcp14">MUST NOT</em> be sent using the multipart/byteranges media type. A response to a request for multiple ranges, whose result is a single range, <em class="bcp14">MAY</em> be sent as a multipart/byteranges media type with one part. A client that cannot decode a multipart/byteranges message <em class="bcp14">MUST NOT</em> ask for multiple ranges in a single request. 837 </p> 838 <p id="rfc.section.5.1.p.6">When a client asks for multiple ranges in one request, the server <em class="bcp14">SHOULD</em> send them in the order that they appeared in the request. 839 </p> 795 <p id="rfc.section.4.1.p.4">A server <em class="bcp14">MAY</em> combine requested ranges when those ranges are overlapping (see <a href="#overlapping.ranges" title="Overlapping Ranges">Section 6.1</a>). 796 </p> 797 <p id="rfc.section.4.1.p.5">A response to a request for a single range <em class="bcp14">MUST NOT</em> be sent using the multipart/byteranges media type. A response to a request for multiple ranges, whose result is a single range, <em class="bcp14">MAY</em> be sent as a multipart/byteranges media type with one part. A client that cannot decode a multipart/byteranges message <em class="bcp14">MUST NOT</em> ask for multiple ranges in a single request. 798 </p> 799 <p id="rfc.section.4.1.p.6">When a client asks for multiple ranges in one request, the server <em class="bcp14">SHOULD</em> send them in the order that they appeared in the request. 800 </p> 801 <div id="rfc.iref.18"></div> 802 <h2 id="rfc.section.4.2"><a href="#rfc.section.4.2">4.2</a> <a id="status.206" href="#status.206">206 Partial Content</a></h2> 803 <p id="rfc.section.4.2.p.1">The <dfn>206 (Partial Content)</dfn> status code indicates that the server has fulfilled the partial GET request for the resource. The request <em class="bcp14">MUST</em> have included a <a href="#header.range" class="smpl">Range</a> header field (<a href="#header.range" id="rfc.xref.header.range.2" title="Range">Section 3.1</a>) indicating the desired range, and <em class="bcp14">MAY</em> have included an <a href="#header.if-range" class="smpl">If-Range</a> header field (<a href="#header.if-range" id="rfc.xref.header.if-range.2" title="If-Range">Section 3.2</a>) to make the request conditional. 804 </p> 805 <p id="rfc.section.4.2.p.2">When a 206 response is generated, the sender <em class="bcp14">MUST</em> generate the following header fields: 806 </p> 807 <ul> 808 <li>Either a <a href="#header.content-range" class="smpl">Content-Range</a> header field (<a href="#header.content-range" id="rfc.xref.header.content-range.2" title="Content-Range">Section 4.4</a>) indicating the range included with this response, or a multipart/byteranges <a href="p2-semantics.html#header.content-type" class="smpl">Content-Type</a> including Content-Range fields for each part. If a <a href="p1-messaging.html#header.content-length" class="smpl">Content-Length</a> header field is present in the response, its value <em class="bcp14">MUST</em> match the actual number of octets transmitted in the message body. 809 </li> 810 <li>Date</li> 811 <li> <a href="p6-cache.html#header.cache-control" class="smpl">Cache-Control</a>, <a href="p4-conditional.html#header.etag" class="smpl">ETag</a>, <a href="p6-cache.html#header.expires" class="smpl">Expires</a>, <a href="p2-semantics.html#header.content-location" class="smpl">Content-Location</a> and/or <a href="p2-semantics.html#header.vary" class="smpl">Vary</a>, if the header field would have been sent in a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response to the same request 812 </li> 813 </ul> 814 <p id="rfc.section.4.2.p.3">If a 206 is generated in response to a request with an <a href="#header.if-range" class="smpl">If-Range</a> header field, the sender <em class="bcp14">SHOULD NOT</em> generate other representation header fields beyond those described above. Otherwise, the sender <em class="bcp14">MUST</em> generate all of the same representation header fields that would have been sent in a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response to the same request. 815 </p> 816 <p id="rfc.section.4.2.p.4">Caches <em class="bcp14">MAY</em> use a heuristic (see <a href="p6-cache.html#heuristic.freshness" title="Calculating Heuristic Freshness">Section 4.1.2</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Caching">[Part6]</cite></a>) to determine freshness for 206 responses. 817 </p> 818 <div id="rfc.iref.18"></div> 819 <h2 id="rfc.section.4.3"><a href="#rfc.section.4.3">4.3</a> <a id="status.416" href="#status.416">416 Range Not Satisfiable</a></h2> 820 <p id="rfc.section.4.3.p.1">The <dfn>416 (Range Not Satisfiable)</dfn> status code indicates that none of the ranges-specifier values in the request's <a href="#header.range" class="smpl">Range</a> header field (<a href="#header.range" id="rfc.xref.header.range.3" title="Range">Section 3.1</a>) overlap the current extent of the selected resource and the request did not include an <a href="#header.if-range" class="smpl">If-Range</a> header field (<a href="#header.if-range" id="rfc.xref.header.if-range.3" title="If-Range">Section 3.2</a>). (For byte-ranges, this means that the first-byte-pos of all of the byte-range-spec values were greater than the current 821 length of the selected representation.) 822 </p> 823 <p id="rfc.section.4.3.p.2">When this status code is sent in response to a byte-range request, the sender <em class="bcp14">SHOULD</em> generate a <a href="#header.content-range" class="smpl">Content-Range</a> header field specifying the current length of the selected representation (see <a href="#header.content-range" id="rfc.xref.header.content-range.3" title="Content-Range">Section 4.4</a>). 824 </p> 825 <div id="rfc.figure.u.16"></div> 826 <p>For example:</p> <pre class="text">HTTP/1.1 416 Range Not Satisfiable 827 Date: Mon, 20 Jan 2012 15:41:54 GMT 828 Content-Range: bytes */47022 829 Content-Type: image/gif 830 </pre><div class="note" id="rfc.section.4.3.p.4"> 831 <p> <b>Note:</b> Clients cannot depend on servers to send a <a href="#status.416" class="smpl">416 (Range Not 832 Satisfiable)</a> response instead of a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response for an unsatisfiable <a href="#header.range" class="smpl">Range</a> header field, since not all servers implement this header field. 833 </p> 834 </div> 840 835 <div id="rfc.iref.c.1"></div> 841 <h2 id="rfc.section. 5.2"><a href="#rfc.section.5.2">5.2</a> <a id="header.content-range" href="#header.content-range">Content-Range</a></h2>842 <p id="rfc.section. 5.2.p.1">The "Content-Range" header field is sent with a partial representation to specify where in the full representation the payload836 <h2 id="rfc.section.4.4"><a href="#rfc.section.4.4">4.4</a> <a id="header.content-range" href="#header.content-range">Content-Range</a></h2> 837 <p id="rfc.section.4.4.p.1">The "Content-Range" header field is sent with a partial representation to specify where in the full representation the payload 843 838 body is intended to be applied. 844 839 </p> … … 857 852 <a href="#header.content-range" class="smpl">other-content-range</a> = <a href="#range.units" class="smpl">other-range-unit</a> <a href="#imported.abnf" class="smpl">SP</a> <a href="#header.content-range" class="smpl">other-range-resp</a> 858 853 <a href="#header.content-range" class="smpl">other-range-resp</a> = *<a href="#imported.abnf" class="smpl">CHAR</a> 859 </pre><p id="rfc.section. 5.2.p.3">Range units are defined in <a href="#range.units" title="Range Units">Section 2</a>. A recipient of a <a href="#status.206" class="smpl">206 (Partial Content)</a> response containing a <a href="#header.content-range" class="smpl">Content-Range</a> header field with a <a href="#range.units" class="smpl">range unit</a> that the recipient does not understand <em class="bcp14">MUST NOT</em> attempt to recombine it with a stored representation. A proxy that receives such a message <em class="bcp14">SHOULD</em> forward it downstream.860 </p> 861 <p id="rfc.section. 5.2.p.4">For byte ranges, a sender <em class="bcp14">SHOULD</em> indicate the complete length of the representation from which the range has been extracted unless the complete length is unknown854 </pre><p id="rfc.section.4.4.p.3">Range units are defined in <a href="#range.units" title="Range Units">Section 2</a>. A recipient of a <a href="#status.206" class="smpl">206 (Partial Content)</a> response containing a <a href="#header.content-range" class="smpl">Content-Range</a> header field with a <a href="#range.units" class="smpl">range unit</a> that the recipient does not understand <em class="bcp14">MUST NOT</em> attempt to recombine it with a stored representation. A proxy that receives such a message <em class="bcp14">SHOULD</em> forward it downstream. 855 </p> 856 <p id="rfc.section.4.4.p.4">For byte ranges, a sender <em class="bcp14">SHOULD</em> indicate the complete length of the representation from which the range has been extracted unless the complete length is unknown 862 857 or difficult to determine. An asterisk character ("*") in place of the complete-length indicates that the representation length 863 858 was unknown when the header field was generated. 864 859 </p> 865 <p id="rfc.section. 5.2.p.5">A Content-Range field value with a <a href="#header.content-range" class="smpl">byte-range-resp</a> that has a <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> value less than its <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> value, or a <a href="#header.content-range" class="smpl">complete-length</a> value less than or equal to its <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> value, is invalid. The recipient of an invalid <a href="#header.content-range" class="smpl">Content-Range</a> <em class="bcp14">MUST NOT</em> attempt to recombine the received content with a stored representation.866 </p> 867 <p id="rfc.section. 5.2.p.6">A server generating a <a href="#status.206" class="smpl">206 (Partial Content)</a> response to a byte range request <em class="bcp14">MUST</em> send, in each body-part of a multipart response or in the header block of a single part response, a Content-Range header field860 <p id="rfc.section.4.4.p.5">A Content-Range field value with a <a href="#header.content-range" class="smpl">byte-range-resp</a> that has a <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> value less than its <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> value, or a <a href="#header.content-range" class="smpl">complete-length</a> value less than or equal to its <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a> value, is invalid. The recipient of an invalid <a href="#header.content-range" class="smpl">Content-Range</a> <em class="bcp14">MUST NOT</em> attempt to recombine the received content with a stored representation. 861 </p> 862 <p id="rfc.section.4.4.p.6">A server generating a <a href="#status.206" class="smpl">206 (Partial Content)</a> response to a byte range request <em class="bcp14">MUST</em> send, in each body-part of a multipart response or in the header block of a single part response, a Content-Range header field 868 863 containing a <a href="#header.content-range" class="smpl">byte-range-resp</a> value that reflects the corresponding range being sent. The following example would apply when the complete length of the 869 864 selected representation is known by the sender to be 1234 bytes: 870 865 </p> 871 866 <div id="rfc.figure.u.18"></div><pre class="text"> Content-Range: bytes 42-1233/1234 872 </pre><p id="rfc.section. 5.2.p.8">or this second example would apply when the complete length is unknown:</p>867 </pre><p id="rfc.section.4.4.p.8">or this second example would apply when the complete length is unknown:</p> 873 868 <div id="rfc.figure.u.19"></div><pre class="text"> Content-Range: bytes 42-1233/* 874 </pre><p id="rfc.section. 5.2.p.10">A server generating a <a href="#status.416" class="smpl">416 (Range Not Satisfiable)</a> response to a byte range request <em class="bcp14">SHOULD</em> send a Content-Range header field with an <a href="#header.content-range" class="smpl">unsatisfied-range</a> value, as in the following example:869 </pre><p id="rfc.section.4.4.p.10">A server generating a <a href="#status.416" class="smpl">416 (Range Not Satisfiable)</a> response to a byte range request <em class="bcp14">SHOULD</em> send a Content-Range header field with an <a href="#header.content-range" class="smpl">unsatisfied-range</a> value, as in the following example: 875 870 </p> 876 871 <div id="rfc.figure.u.20"></div><pre class="text"> Content-Range: bytes */1234 877 </pre><p id="rfc.section. 5.2.p.12">The complete-length in a 416 response indicates the current length of the selected representation, which will be known by872 </pre><p id="rfc.section.4.4.p.12">The complete-length in a 416 response indicates the current length of the selected representation, which will be known by 878 873 the server generating the response because that is how it determined the range to be unsatisfiable. 879 874 </p> 880 <p id="rfc.section. 5.2.p.13">The "Content-Range" header field has no meaning for status codes that do not explicitly describe its semantic. For this specification,875 <p id="rfc.section.4.4.p.13">The "Content-Range" header field has no meaning for status codes that do not explicitly describe its semantic. For this specification, 881 876 only the <a href="#status.206" class="smpl">206 (Partial Content)</a> and <a href="#status.416" class="smpl">416 (Range Not Satisfiable)</a> status codes describe a meaning for Content-Range. 882 877 </p> 883 <p id="rfc.section. 5.2.p.14">More examples of Content-Range values, assuming that the representation contains a total of 1234 bytes: </p>878 <p id="rfc.section.4.4.p.14">More examples of Content-Range values, assuming that the representation contains a total of 1234 bytes: </p> 884 879 <ul> 885 880 <li>The first 500 bytes: … … 896 891 </pre> </li> 897 892 </ul> 898 <h2 id="rfc.section. 5.3"><a href="#rfc.section.5.3">5.3</a> <a id="combining.byte.ranges" href="#combining.byte.ranges">Combining Ranges</a></h2>899 <p id="rfc.section. 5.3.p.1">A response might transfer only a subrange of a representation if the connection closed prematurely or if the request used893 <h2 id="rfc.section.4.5"><a href="#rfc.section.4.5">4.5</a> <a id="combining.byte.ranges" href="#combining.byte.ranges">Combining Ranges</a></h2> 894 <p id="rfc.section.4.5.p.1">A response might transfer only a subrange of a representation if the connection closed prematurely or if the request used 900 895 one or more Range specifications. After several such transfers, a client might have received several ranges of the same representation. 901 896 These ranges can only be safely combined if they all have in common the same strong validator, where "strong validator" is 902 897 defined to be either an entity-tag that is not marked as weak (<a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4.4"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>) or, if no entity-tag is provided, a <a href="p4-conditional.html#header.last-modified" class="smpl">Last-Modified</a> value that is strong in the sense defined by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.5"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>. 903 898 </p> 904 <p id="rfc.section. 5.3.p.2">When a client receives an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response or a <a href="#status.206" class="smpl">206 (Partial Content)</a> response, and already has one or more partial responses for the same method and effective request URI that have the same strong899 <p id="rfc.section.4.5.p.2">When a client receives an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response or a <a href="#status.206" class="smpl">206 (Partial Content)</a> response, and already has one or more partial responses for the same method and effective request URI that have the same strong 905 900 validator as present in the new response, the recipient <em class="bcp14">MAY</em> combine some or all of those responses into a set of continuous ranges. A client <em class="bcp14">MUST NOT</em> combine responses that differ in the strong validator or that do not have a strong validator. 906 901 </p> 907 <p id="rfc.section. 5.3.p.3">If the new response is an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response, then the header fields of that new response are used for any combined response and replace those of the matching902 <p id="rfc.section.4.5.p.3">If the new response is an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response, then the header fields of that new response are used for any combined response and replace those of the matching 908 903 stored responses. 909 904 </p> 910 <p id="rfc.section. 5.3.p.4">If the new response is a <a href="#status.206" class="smpl">206 (Partial Content)</a> response and at least one of the matching stored responses is a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a>, then the combined response header fields consist of the most recent 200 response's header fields. If all of the matching905 <p id="rfc.section.4.5.p.4">If the new response is a <a href="#status.206" class="smpl">206 (Partial Content)</a> response and at least one of the matching stored responses is a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a>, then the combined response header fields consist of the most recent 200 response's header fields. If all of the matching 911 906 stored responses are 206 responses, then the stored response with the most recent header fields is used as the source of header 912 907 fields for the combined response, except that the client <em class="bcp14">MUST</em> use other header fields provided in the new response, aside from <a href="#header.content-range" class="smpl">Content-Range</a>, to replace all instances of the corresponding header fields in the stored response. 913 908 </p> 914 <p id="rfc.section. 5.3.p.5">The combined response message body consists of the union of partial content ranges in the new response and each of the selected909 <p id="rfc.section.4.5.p.5">The combined response message body consists of the union of partial content ranges in the new response and each of the selected 915 910 responses. If the union consists of the entire range of the representation, then the client <em class="bcp14">MUST</em> record the combined response as if it were a complete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response, including a <a href="p1-messaging.html#header.content-length" class="smpl">Content-Length</a> header field that reflects the complete length. Otherwise, the client <em class="bcp14">MUST</em> record the set of continuous ranges as one of the following: an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response if the combined response is a prefix of the representation, a single <a href="#status.206" class="smpl">206 (Partial Content)</a> response containing a multipart/byteranges body, or multiple <a href="#status.206" class="smpl">206 (Partial Content)</a> responses, each with one continuous range that is indicated by a <a href="#header.content-range" class="smpl">Content-Range</a> header field. 916 911 </p> 917 <h1 id="rfc.section. 6"><a href="#rfc.section.6">6.</a> <a id="IANA.considerations" href="#IANA.considerations">IANA Considerations</a></h1>918 <h2 id="rfc.section. 6.1"><a href="#rfc.section.6.1">6.1</a> <a id="range.unit.registry" href="#range.unit.registry">Range Unit Registry</a></h2>919 <p id="rfc.section. 6.1.p.1">The HTTP Range Unit Registry defines the name space for the range unit names and refers to their corresponding specifications.912 <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a> <a id="IANA.considerations" href="#IANA.considerations">IANA Considerations</a></h1> 913 <h2 id="rfc.section.5.1"><a href="#rfc.section.5.1">5.1</a> <a id="range.unit.registry" href="#range.unit.registry">Range Unit Registry</a></h2> 914 <p id="rfc.section.5.1.p.1">The HTTP Range Unit Registry defines the name space for the range unit names and refers to their corresponding specifications. 920 915 The registry is maintained at <<a href="http://www.iana.org/assignments/http-range-specifiers">http://www.iana.org/assignments/http-range-specifiers</a>>. 921 916 </p> 922 <h3 id="rfc.section. 6.1.1"><a href="#rfc.section.6.1.1">6.1.1</a> <a id="range.unit.registry.procedure" href="#range.unit.registry.procedure">Procedure</a></h3>923 <p id="rfc.section. 6.1.1.p.1">Registration of an HTTP Range Unit <em class="bcp14">MUST</em> include the following fields:917 <h3 id="rfc.section.5.1.1"><a href="#rfc.section.5.1.1">5.1.1</a> <a id="range.unit.registry.procedure" href="#range.unit.registry.procedure">Procedure</a></h3> 918 <p id="rfc.section.5.1.1.p.1">Registration of an HTTP Range Unit <em class="bcp14">MUST</em> include the following fields: 924 919 </p> 925 920 <ul> … … 928 923 <li>Pointer to specification text</li> 929 924 </ul> 930 <p id="rfc.section. 6.1.1.p.2">Values to be added to this name space require IETF Review (see <a href="#RFC5226" id="rfc.xref.RFC5226.1"><cite title="Guidelines for Writing an IANA Considerations Section in RFCs">[RFC5226]</cite></a>, <a href="http://tools.ietf.org/html/rfc5226#section-4.1">Section 4.1</a>).931 </p> 932 <h3 id="rfc.section. 6.1.2"><a href="#rfc.section.6.1.2">6.1.2</a> <a id="range.unit.registration" href="#range.unit.registration">Registrations</a></h3>933 <p id="rfc.section. 6.1.2.p.1">The initial HTTP Range Unit Registry shall contain the registrations below:</p>925 <p id="rfc.section.5.1.1.p.2">Values to be added to this name space require IETF Review (see <a href="#RFC5226" id="rfc.xref.RFC5226.1"><cite title="Guidelines for Writing an IANA Considerations Section in RFCs">[RFC5226]</cite></a>, <a href="http://tools.ietf.org/html/rfc5226#section-4.1">Section 4.1</a>). 926 </p> 927 <h3 id="rfc.section.5.1.2"><a href="#rfc.section.5.1.2">5.1.2</a> <a id="range.unit.registration" href="#range.unit.registration">Registrations</a></h3> 928 <p id="rfc.section.5.1.2.p.1">The initial HTTP Range Unit Registry shall contain the registrations below:</p> 934 929 <div id="rfc.table.1"> 935 930 <div id="iana.range.units.table"></div> … … 956 951 </table> 957 952 </div> 958 <p id="rfc.section. 6.1.2.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p>959 <h2 id="rfc.section. 6.2"><a href="#rfc.section.6.2">6.2</a> <a id="status.code.registration" href="#status.code.registration">Status Code Registration</a></h2>960 <p id="rfc.section. 6.2.p.1">The HTTP Status Code Registry located at <<a href="http://www.iana.org/assignments/http-status-codes">http://www.iana.org/assignments/http-status-codes</a>> shall be updated with the registrations below:953 <p id="rfc.section.5.1.2.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p> 954 <h2 id="rfc.section.5.2"><a href="#rfc.section.5.2">5.2</a> <a id="status.code.registration" href="#status.code.registration">Status Code Registration</a></h2> 955 <p id="rfc.section.5.2.p.1">The HTTP Status Code Registry located at <<a href="http://www.iana.org/assignments/http-status-codes">http://www.iana.org/assignments/http-status-codes</a>> shall be updated with the registrations below: 961 956 </p> 962 957 <div id="rfc.table.2"> … … 974 969 <td class="left">206</td> 975 970 <td class="left">Partial Content</td> 976 <td class="left"> <a href="#status.206" id="rfc.xref.status.206.1" title="206 Partial Content">Section 4. 1</a>971 <td class="left"> <a href="#status.206" id="rfc.xref.status.206.1" title="206 Partial Content">Section 4.2</a> 977 972 </td> 978 973 </tr> … … 980 975 <td class="left">416</td> 981 976 <td class="left">Range Not Satisfiable</td> 982 <td class="left"> <a href="#status.416" id="rfc.xref.status.416.1" title="416 Range Not Satisfiable">Section 4. 2</a>977 <td class="left"> <a href="#status.416" id="rfc.xref.status.416.1" title="416 Range Not Satisfiable">Section 4.3</a> 983 978 </td> 984 979 </tr> … … 986 981 </table> 987 982 </div> 988 <h2 id="rfc.section. 6.3"><a href="#rfc.section.6.3">6.3</a> <a id="header.field.registration" href="#header.field.registration">Header Field Registration</a></h2>989 <p id="rfc.section. 6.3.p.1">The Message Header Field Registry located at <<a href="http://www.iana.org/assignments/message-headers/message-header-index.html">http://www.iana.org/assignments/message-headers/message-header-index.html</a>> shall be updated with the permanent registrations below (see <a href="#BCP90" id="rfc.xref.BCP90.1"><cite title="Registration Procedures for Message Header Fields">[BCP90]</cite></a>):983 <h2 id="rfc.section.5.3"><a href="#rfc.section.5.3">5.3</a> <a id="header.field.registration" href="#header.field.registration">Header Field Registration</a></h2> 984 <p id="rfc.section.5.3.p.1">The Message Header Field Registry located at <<a href="http://www.iana.org/assignments/message-headers/message-header-index.html">http://www.iana.org/assignments/message-headers/message-header-index.html</a>> shall be updated with the permanent registrations below (see <a href="#BCP90" id="rfc.xref.BCP90.1"><cite title="Registration Procedures for Message Header Fields">[BCP90]</cite></a>): 990 985 </p> 991 986 <div id="rfc.table.3"> … … 1012 1007 <td class="left">http</td> 1013 1008 <td class="left">standard</td> 1014 <td class="left"> <a href="#header.content-range" id="rfc.xref.header.content-range.4" title="Content-Range">Section 5.2</a>1009 <td class="left"> <a href="#header.content-range" id="rfc.xref.header.content-range.4" title="Content-Range">Section 4.4</a> 1015 1010 </td> 1016 1011 </tr> … … 1032 1027 </table> 1033 1028 </div> 1034 <p id="rfc.section. 6.3.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p>1035 <h1 id="rfc.section. 7"><a href="#rfc.section.7">7.</a> <a id="security.considerations" href="#security.considerations">Security Considerations</a></h1>1036 <p id="rfc.section. 7.p.1">This section is meant to inform developers, information providers, and users of known security concerns specific to the HTTP/1.11029 <p id="rfc.section.5.3.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p> 1030 <h1 id="rfc.section.6"><a href="#rfc.section.6">6.</a> <a id="security.considerations" href="#security.considerations">Security Considerations</a></h1> 1031 <p id="rfc.section.6.p.1">This section is meant to inform developers, information providers, and users of known security concerns specific to the HTTP/1.1 1037 1032 range request mechanisms. More general security considerations are addressed in HTTP messaging <a href="#Part1" id="rfc.xref.Part1.3"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing">[Part1]</cite></a> and semantics <a href="#Part2" id="rfc.xref.Part2.1"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content">[Part2]</cite></a>. 1038 1033 </p> 1039 <h2 id="rfc.section. 7.1"><a href="#rfc.section.7.1">7.1</a> <a id="overlapping.ranges" href="#overlapping.ranges">Overlapping Ranges</a></h2>1040 <p id="rfc.section. 7.1.p.1">Range requests containing overlapping ranges can lead to a situation where the server is sending far more data than the size1034 <h2 id="rfc.section.6.1"><a href="#rfc.section.6.1">6.1</a> <a id="overlapping.ranges" href="#overlapping.ranges">Overlapping Ranges</a></h2> 1035 <p id="rfc.section.6.1.p.1">Range requests containing overlapping ranges can lead to a situation where the server is sending far more data than the size 1041 1036 of the complete resource representation. 1042 1037 </p> 1043 <h1 id="rfc.section. 8"><a href="#rfc.section.8">8.</a> <a id="acks" href="#acks">Acknowledgments</a></h1>1044 <p id="rfc.section. 8.p.1">See <a href="p1-messaging.html#acks" title="Acknowledgments">Section 9</a> of <a href="#Part1" id="rfc.xref.Part1.4"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing">[Part1]</cite></a>.1045 </p> 1046 <h1 id="rfc.references"><a id="rfc.section. 9" href="#rfc.section.9">9.</a> References1038 <h1 id="rfc.section.7"><a href="#rfc.section.7">7.</a> <a id="acks" href="#acks">Acknowledgments</a></h1> 1039 <p id="rfc.section.7.p.1">See <a href="p1-messaging.html#acks" title="Acknowledgments">Section 9</a> of <a href="#Part1" id="rfc.xref.Part1.4"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing">[Part1]</cite></a>. 1040 </p> 1041 <h1 id="rfc.references"><a id="rfc.section.8" href="#rfc.section.8">8.</a> References 1047 1042 </h1> 1048 <h2 id="rfc.references.1"><a href="#rfc.section. 9.1" id="rfc.section.9.1">9.1</a> Normative References1043 <h2 id="rfc.references.1"><a href="#rfc.section.8.1" id="rfc.section.8.1">8.1</a> Normative References 1049 1044 </h2> 1050 1045 <table> … … 1085 1080 </tr> 1086 1081 </table> 1087 <h2 id="rfc.references.2"><a href="#rfc.section. 9.2" id="rfc.section.9.2">9.2</a> Informative References1082 <h2 id="rfc.references.2"><a href="#rfc.section.8.2" id="rfc.section.8.2">8.2</a> Informative References 1088 1083 </h2> 1089 1084 <table> … … 1220 1215 </ol> 1221 1216 <h1 id="rfc.section.B"><a href="#rfc.section.B">B.</a> <a id="changes.from.rfc.2616" href="#changes.from.rfc.2616">Changes from RFC 2616</a></h1> 1222 <p id="rfc.section.B.p.1">A weak validator cannot be used in a <a href="#status.206" class="smpl">206</a> response. (<a href="#status.206" id="rfc.xref.status.206.2" title="206 Partial Content">Section 4. 1</a>)1223 </p> 1224 <p id="rfc.section.B.p.2">The Content-Range header field only has meaning when the status code explicitly defines its use. (<a href="#header.content-range" id="rfc.xref.header.content-range.5" title="Content-Range">Section 5.2</a>)1217 <p id="rfc.section.B.p.1">A weak validator cannot be used in a <a href="#status.206" class="smpl">206</a> response. (<a href="#status.206" id="rfc.xref.status.206.2" title="206 Partial Content">Section 4.2</a>) 1218 </p> 1219 <p id="rfc.section.B.p.2">The Content-Range header field only has meaning when the status code explicitly defines its use. (<a href="#header.content-range" id="rfc.xref.header.content-range.5" title="Content-Range">Section 4.4</a>) 1225 1220 </p> 1226 1221 <p id="rfc.section.B.p.3">Servers are given more leeway in how they respond to a range request, in order to mitigate abuse by malicious (or just greedy) … … 1229 1224 <p id="rfc.section.B.p.4">multipart/byteranges can consist of a single part. (<a href="#internet.media.type.multipart.byteranges" title="Internet Media Type multipart/byteranges">Appendix A</a>) 1230 1225 </p> 1231 <p id="rfc.section.B.p.5">This specification introduces a Range Specifier Registry. (<a href="#range.unit.registry" title="Range Unit Registry">Section 6.1</a>)1226 <p id="rfc.section.B.p.5">This specification introduces a Range Specifier Registry. (<a href="#range.unit.registry" title="Range Unit Registry">Section 5.1</a>) 1232 1227 </p> 1233 1228 <h1 id="rfc.section.C"><a href="#rfc.section.C">C.</a> <a id="imported.abnf" href="#imported.abnf">Imported ABNF</a></h1> … … 1324 1319 <ul class="ind"> 1325 1320 <li><a id="rfc.index.2" href="#rfc.index.2"><b>2</b></a><ul> 1326 <li>206 Partial Content (status code) <a href="#rfc.iref.18"><b>4. 1</b></a>, <a href="#rfc.xref.status.206.1">6.2</a>, <a href="#rfc.xref.status.206.2">B</a></li>1321 <li>206 Partial Content (status code) <a href="#rfc.iref.18"><b>4.2</b></a>, <a href="#rfc.xref.status.206.1">5.2</a>, <a href="#rfc.xref.status.206.2">B</a></li> 1327 1322 </ul> 1328 1323 </li> 1329 1324 <li><a id="rfc.index.4" href="#rfc.index.4"><b>4</b></a><ul> 1330 <li>416 Range Not Satisfiable (status code) <a href="#rfc.iref.18"><b>4. 2</b></a>, <a href="#rfc.xref.status.416.1">6.2</a></li>1325 <li>416 Range Not Satisfiable (status code) <a href="#rfc.iref.18"><b>4.3</b></a>, <a href="#rfc.xref.status.416.1">5.2</a></li> 1331 1326 </ul> 1332 1327 </li> 1333 1328 <li><a id="rfc.index.A" href="#rfc.index.A"><b>A</b></a><ul> 1334 <li>Accept-Ranges header field <a href="#rfc.iref.a.1"><b>2.3</b></a>, <a href="#rfc.xref.header.accept-ranges.1"> 6.1.2</a>, <a href="#rfc.xref.header.accept-ranges.2">6.3</a></li>1329 <li>Accept-Ranges header field <a href="#rfc.iref.a.1"><b>2.3</b></a>, <a href="#rfc.xref.header.accept-ranges.1">5.1.2</a>, <a href="#rfc.xref.header.accept-ranges.2">5.3</a></li> 1335 1330 </ul> 1336 1331 </li> 1337 1332 <li><a id="rfc.index.B" href="#rfc.index.B"><b>B</b></a><ul> 1338 <li><em>BCP13</em> <a href="#BCP13"><b> 9.2</b></a>, <a href="#rfc.xref.BCP13.1">A</a></li>1339 <li><em>BCP90</em> <a href="#rfc.xref.BCP90.1"> 6.3</a>, <a href="#BCP90"><b>9.2</b></a></li>1333 <li><em>BCP13</em> <a href="#BCP13"><b>8.2</b></a>, <a href="#rfc.xref.BCP13.1">A</a></li> 1334 <li><em>BCP90</em> <a href="#rfc.xref.BCP90.1">5.3</a>, <a href="#BCP90"><b>8.2</b></a></li> 1340 1335 </ul> 1341 1336 </li> 1342 1337 <li><a id="rfc.index.C" href="#rfc.index.C"><b>C</b></a><ul> 1343 <li>Content-Range header field <a href="#rfc.xref.header.content-range.1">2</a>, <a href="#rfc.xref.header.content-range.2">4. 1</a>, <a href="#rfc.xref.header.content-range.3">4.2</a>, <a href="#rfc.iref.c.1"><b>5.2</b></a>, <a href="#rfc.xref.header.content-range.4">6.3</a>, <a href="#rfc.xref.header.content-range.5">B</a></li>1338 <li>Content-Range header field <a href="#rfc.xref.header.content-range.1">2</a>, <a href="#rfc.xref.header.content-range.2">4.2</a>, <a href="#rfc.xref.header.content-range.3">4.3</a>, <a href="#rfc.iref.c.1"><b>4.4</b></a>, <a href="#rfc.xref.header.content-range.4">5.3</a>, <a href="#rfc.xref.header.content-range.5">B</a></li> 1344 1339 </ul> 1345 1340 </li> … … 1349 1344 <li><tt>Accept-Ranges</tt> <a href="#rfc.iref.g.12"><b>2.3</b></a></li> 1350 1345 <li><tt>acceptable-ranges</tt> <a href="#rfc.iref.g.13"><b>2.3</b></a></li> 1351 <li><tt>byte-content-range</tt> <a href="#rfc.iref.g.17"><b> 5.2</b></a></li>1352 <li><tt>byte-range</tt> <a href="#rfc.iref.g.19"><b> 5.2</b></a></li>1353 <li><tt>byte-range-resp</tt> <a href="#rfc.iref.g.18"><b> 5.2</b></a></li>1346 <li><tt>byte-content-range</tt> <a href="#rfc.iref.g.17"><b>4.4</b></a></li> 1347 <li><tt>byte-range</tt> <a href="#rfc.iref.g.19"><b>4.4</b></a></li> 1348 <li><tt>byte-range-resp</tt> <a href="#rfc.iref.g.18"><b>4.4</b></a></li> 1354 1349 <li><tt>byte-range-set</tt> <a href="#rfc.iref.g.6"><b>2.1</b></a></li> 1355 1350 <li><tt>byte-range-spec</tt> <a href="#rfc.iref.g.7"><b>2.1</b></a></li> 1356 1351 <li><tt>byte-ranges-specifier</tt> <a href="#rfc.iref.g.5"><b>2.1</b></a></li> 1357 1352 <li><tt>bytes-unit</tt> <a href="#rfc.iref.g.2"><b>2</b></a></li> 1358 <li><tt>complete-length</tt> <a href="#rfc.iref.g.23"><b> 5.2</b></a></li>1359 <li><tt>Content-Range</tt> <a href="#rfc.iref.g.16"><b> 5.2</b></a></li>1353 <li><tt>complete-length</tt> <a href="#rfc.iref.g.23"><b>4.4</b></a></li> 1354 <li><tt>Content-Range</tt> <a href="#rfc.iref.g.16"><b>4.4</b></a></li> 1360 1355 <li><tt>first-byte-pos</tt> <a href="#rfc.iref.g.8"><b>2.1</b></a></li> 1361 1356 <li><tt>If-Range</tt> <a href="#rfc.iref.g.15"><b>3.2</b></a></li> 1362 1357 <li><tt>last-byte-pos</tt> <a href="#rfc.iref.g.9"><b>2.1</b></a></li> 1363 <li><tt>other-content-range</tt> <a href="#rfc.iref.g.21"><b> 5.2</b></a></li>1364 <li><tt>other-range-resp</tt> <a href="#rfc.iref.g.22"><b> 5.2</b></a></li>1358 <li><tt>other-content-range</tt> <a href="#rfc.iref.g.21"><b>4.4</b></a></li> 1359 <li><tt>other-range-resp</tt> <a href="#rfc.iref.g.22"><b>4.4</b></a></li> 1365 1360 <li><tt>other-range-unit</tt> <a href="#rfc.iref.g.3"><b>2</b></a></li> 1366 1361 <li><tt>Range</tt> <a href="#rfc.iref.g.14"><b>3.1</b></a></li> … … 1369 1364 <li><tt>suffix-byte-range-spec</tt> <a href="#rfc.iref.g.10"><b>2.1</b></a></li> 1370 1365 <li><tt>suffix-length</tt> <a href="#rfc.iref.g.11"><b>2.1</b></a></li> 1371 <li><tt>unsatisfied-range</tt> <a href="#rfc.iref.g.20"><b> 5.2</b></a></li>1366 <li><tt>unsatisfied-range</tt> <a href="#rfc.iref.g.20"><b>4.4</b></a></li> 1372 1367 </ul> 1373 1368 </li> … … 1375 1370 </li> 1376 1371 <li><a id="rfc.index.I" href="#rfc.index.I"><b>I</b></a><ul> 1377 <li>If-Range header field <a href="#rfc.xref.header.if-range.1">3.1</a>, <a href="#rfc.iref.i.1"><b>3.2</b></a>, <a href="#rfc.xref.header.if-range.2">4. 1</a>, <a href="#rfc.xref.header.if-range.3">4.2</a>, <a href="#rfc.xref.header.if-range.4">6.3</a></li>1372 <li>If-Range header field <a href="#rfc.xref.header.if-range.1">3.1</a>, <a href="#rfc.iref.i.1"><b>3.2</b></a>, <a href="#rfc.xref.header.if-range.2">4.2</a>, <a href="#rfc.xref.header.if-range.3">4.3</a>, <a href="#rfc.xref.header.if-range.4">5.3</a></li> 1378 1373 </ul> 1379 1374 </li> … … 1390 1385 </li> 1391 1386 <li><a id="rfc.index.P" href="#rfc.index.P"><b>P</b></a><ul> 1392 <li><em>Part1</em> <a href="#rfc.xref.Part1.1">1.1</a>, <a href="#rfc.xref.Part1.2">1.2</a>, <a href="#rfc.xref.Part1.3"> 7</a>, <a href="#rfc.xref.Part1.4">8</a>, <a href="#Part1"><b>9.1</b></a>, <a href="#rfc.xref.Part1.5">C</a>, <a href="#rfc.xref.Part1.6">C</a>, <a href="#rfc.xref.Part1.7">C</a><ul>1387 <li><em>Part1</em> <a href="#rfc.xref.Part1.1">1.1</a>, <a href="#rfc.xref.Part1.2">1.2</a>, <a href="#rfc.xref.Part1.3">6</a>, <a href="#rfc.xref.Part1.4">7</a>, <a href="#Part1"><b>8.1</b></a>, <a href="#rfc.xref.Part1.5">C</a>, <a href="#rfc.xref.Part1.6">C</a>, <a href="#rfc.xref.Part1.7">C</a><ul> 1393 1388 <li><em>Section 1.2</em> <a href="#rfc.xref.Part1.2">1.2</a></li> 1394 1389 <li><em>Section 2.5</em> <a href="#rfc.xref.Part1.1">1.1</a></li> 1395 1390 <li><em>Section 3.2.3</em> <a href="#rfc.xref.Part1.6">C</a></li> 1396 1391 <li><em>Section 3.2.6</em> <a href="#rfc.xref.Part1.7">C</a></li> 1397 <li><em>Section 9</em> <a href="#rfc.xref.Part1.4"> 8</a></li>1392 <li><em>Section 9</em> <a href="#rfc.xref.Part1.4">7</a></li> 1398 1393 </ul> 1399 1394 </li> 1400 <li><em>Part2</em> <a href="#rfc.xref.Part2.1"> 7</a>, <a href="#Part2"><b>9.1</b></a>, <a href="#rfc.xref.Part2.2">C</a><ul>1395 <li><em>Part2</em> <a href="#rfc.xref.Part2.1">6</a>, <a href="#Part2"><b>8.1</b></a>, <a href="#rfc.xref.Part2.2">C</a><ul> 1401 1396 <li><em>Section 7.1.1.1</em> <a href="#rfc.xref.Part2.2">C</a></li> 1402 1397 </ul> 1403 1398 </li> 1404 <li><em>Part4</em> <a href="#rfc.xref.Part4.1">3.1</a>, <a href="#rfc.xref.Part4.2">3.2</a>, <a href="#rfc.xref.Part4.3">3.2</a>, <a href="#rfc.xref.Part4.4"> 5.3</a>, <a href="#rfc.xref.Part4.5">5.3</a>, <a href="#Part4"><b>9.1</b></a>, <a href="#rfc.xref.Part4.6">C</a><ul>1405 <li><em>Section 2.2.2</em> <a href="#rfc.xref.Part4.2">3.2</a>, <a href="#rfc.xref.Part4.3">3.2</a>, <a href="#rfc.xref.Part4.5"> 5.3</a></li>1406 <li><em>Section 2.3</em> <a href="#rfc.xref.Part4.4"> 5.3</a>, <a href="#rfc.xref.Part4.6">C</a></li>1399 <li><em>Part4</em> <a href="#rfc.xref.Part4.1">3.1</a>, <a href="#rfc.xref.Part4.2">3.2</a>, <a href="#rfc.xref.Part4.3">3.2</a>, <a href="#rfc.xref.Part4.4">4.5</a>, <a href="#rfc.xref.Part4.5">4.5</a>, <a href="#Part4"><b>8.1</b></a>, <a href="#rfc.xref.Part4.6">C</a><ul> 1400 <li><em>Section 2.2.2</em> <a href="#rfc.xref.Part4.2">3.2</a>, <a href="#rfc.xref.Part4.3">3.2</a>, <a href="#rfc.xref.Part4.5">4.5</a></li> 1401 <li><em>Section 2.3</em> <a href="#rfc.xref.Part4.4">4.5</a>, <a href="#rfc.xref.Part4.6">C</a></li> 1407 1402 </ul> 1408 1403 </li> 1409 <li><em>Part6</em> <a href="#rfc.xref.Part6.1">4. 1</a>, <a href="#Part6"><b>9.1</b></a><ul>1410 <li><em>Section 4.1.2</em> <a href="#rfc.xref.Part6.1">4. 1</a></li>1404 <li><em>Part6</em> <a href="#rfc.xref.Part6.1">4.2</a>, <a href="#Part6"><b>8.1</b></a><ul> 1405 <li><em>Section 4.1.2</em> <a href="#rfc.xref.Part6.1">4.2</a></li> 1411 1406 </ul> 1412 1407 </li> … … 1414 1409 </li> 1415 1410 <li><a id="rfc.index.R" href="#rfc.index.R"><b>R</b></a><ul> 1416 <li>Range header field <a href="#rfc.xref.header.range.1">2</a>, <a href="#rfc.iref.r.1"><b>3.1</b></a>, <a href="#rfc.xref.header.range.2">4. 1</a>, <a href="#rfc.xref.header.range.3">4.2</a>, <a href="#rfc.xref.header.range.4">6.3</a></li>1417 <li><em>RFC2046</em> <a href="#RFC2046"><b> 9.1</b></a>, <a href="#rfc.xref.RFC2046.1">A</a>, <a href="#rfc.xref.RFC2046.2">A</a><ul>1411 <li>Range header field <a href="#rfc.xref.header.range.1">2</a>, <a href="#rfc.iref.r.1"><b>3.1</b></a>, <a href="#rfc.xref.header.range.2">4.2</a>, <a href="#rfc.xref.header.range.3">4.3</a>, <a href="#rfc.xref.header.range.4">5.3</a></li> 1412 <li><em>RFC2046</em> <a href="#RFC2046"><b>8.1</b></a>, <a href="#rfc.xref.RFC2046.1">A</a>, <a href="#rfc.xref.RFC2046.2">A</a><ul> 1418 1413 <li><em>Section 5.1</em> <a href="#rfc.xref.RFC2046.1">A</a></li> 1419 1414 </ul> 1420 1415 </li> 1421 <li><em>RFC2119</em> <a href="#rfc.xref.RFC2119.1">1.1</a>, <a href="#RFC2119"><b> 9.1</b></a></li>1422 <li><em>RFC2616</em> <a href="#RFC2616"><b> 9.2</b></a></li>1423 <li><em>RFC5226</em> <a href="#rfc.xref.RFC5226.1"> 6.1.1</a>, <a href="#RFC5226"><b>9.2</b></a><ul>1424 <li><em>Section 4.1</em> <a href="#rfc.xref.RFC5226.1"> 6.1.1</a></li>1416 <li><em>RFC2119</em> <a href="#rfc.xref.RFC2119.1">1.1</a>, <a href="#RFC2119"><b>8.1</b></a></li> 1417 <li><em>RFC2616</em> <a href="#RFC2616"><b>8.2</b></a></li> 1418 <li><em>RFC5226</em> <a href="#rfc.xref.RFC5226.1">5.1.1</a>, <a href="#RFC5226"><b>8.2</b></a><ul> 1419 <li><em>Section 4.1</em> <a href="#rfc.xref.RFC5226.1">5.1.1</a></li> 1425 1420 </ul> 1426 1421 </li> 1427 <li><em>RFC5234</em> <a href="#rfc.xref.RFC5234.1">1.2</a>, <a href="#RFC5234"><b> 9.1</b></a>, <a href="#rfc.xref.RFC5234.2">C</a><ul>1422 <li><em>RFC5234</em> <a href="#rfc.xref.RFC5234.1">1.2</a>, <a href="#RFC5234"><b>8.1</b></a>, <a href="#rfc.xref.RFC5234.2">C</a><ul> 1428 1423 <li><em>Appendix B.1</em> <a href="#rfc.xref.RFC5234.2">C</a></li> 1429 1424 </ul>
Note: See TracChangeset
for help on using the changeset viewer.