Ignore:
Timestamp:
Nov 14, 2008, 5:47:08 PM (11 years ago)
Author:
julian.reschke@…
Message:

Remove bias in favor of byte ranges; allow custom ranges in ABNF. (related to #85)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/p5-range.html

    r382 r393  
    368368      <link rel="Chapter" title="3 Range Units" href="#rfc.section.3">
    369369      <link rel="Chapter" title="4 Status Code Definitions" href="#rfc.section.4">
    370       <link rel="Chapter" title="5 Combining Byte Ranges" href="#rfc.section.5">
     370      <link rel="Chapter" title="5 Combining Ranges" href="#rfc.section.5">
    371371      <link rel="Chapter" title="6 Header Field Definitions" href="#rfc.section.6">
    372372      <link rel="Chapter" title="7 IANA Considerations" href="#rfc.section.7">
     
    473473         <tr>
    474474            <td class="header left"></td>
    475             <td class="header right">November 14, 2008</td>
     475            <td class="header right">November 15, 2008</td>
    476476         </tr>
    477477      </table>
     
    520520            </ul>
    521521         </li>
    522          <li class="tocline0">5.&nbsp;&nbsp;&nbsp;<a href="#combining.byte.ranges">Combining Byte Ranges</a></li>
     522         <li class="tocline0">5.&nbsp;&nbsp;&nbsp;<a href="#combining.byte.ranges">Combining Ranges</a></li>
    523523         <li class="tocline0">6.&nbsp;&nbsp;&nbsp;<a href="#header.fields">Header Field Definitions</a><ul class="toc">
    524524               <li class="tocline1">6.1&nbsp;&nbsp;&nbsp;<a href="#header.accept-ranges">Accept-Ranges</a></li>
     
    585585      </p>
    586586      <h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a>&nbsp;<a id="notation" href="#notation">Notational Conventions and Generic Grammar</a></h1>
    587       <p id="rfc.section.2.p.1">This specification uses the ABNF syntax defined in <a href="p1-messaging.html#notation.abnf" title="ABNF Extension: #rule">Section 2.1</a> of <a href="#Part1" id="rfc.xref.Part1.1"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a> and the core rules defined in <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a> of <a href="#Part1" id="rfc.xref.Part1.2"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>:
    588       </p>
    589       <div id="rfc.figure.u.1"></div><pre class="inline">  <a href="#notation" class="smpl">DIGIT</a>      = &lt;DIGIT, defined in <a href="#Part1" id="rfc.xref.Part1.3"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
    590   <a href="#notation" class="smpl">SP</a>         = &lt;SP, defined in <a href="#Part1" id="rfc.xref.Part1.4"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
    591 </pre><div id="rfc.figure.u.2"></div><pre class="inline">  <a href="#notation" class="smpl">token</a>      = &lt;token, defined in <a href="#Part1" id="rfc.xref.Part1.5"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
    592   <a href="#notation" class="smpl">OWS</a>        = &lt;OWS, defined in <a href="#Part1" id="rfc.xref.Part1.6"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 2.2</a>&gt;
     587      <p id="rfc.section.2.p.1">This specification uses the ABNF syntax defined in <a href="p1-messaging.html#notation.abnf" title="ABNF Extension: #rule">Section 1.2.1</a> of <a href="#Part1" id="rfc.xref.Part1.1"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a> and the core rules defined in <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 1.2.2</a> of <a href="#Part1" id="rfc.xref.Part1.2"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>:
     588      </p>
     589      <div id="rfc.figure.u.1"></div><pre class="inline">  <a href="#notation" class="smpl">CHAR</a>       = &lt;CHAR, defined in <a href="#Part1" id="rfc.xref.Part1.3"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 1.2.2</a>&gt;
     590  <a href="#notation" class="smpl">DIGIT</a>      = &lt;DIGIT, defined in <a href="#Part1" id="rfc.xref.Part1.4"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 1.2.2</a>&gt;
     591  <a href="#notation" class="smpl">SP</a>         = &lt;SP, defined in <a href="#Part1" id="rfc.xref.Part1.5"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 1.2.2</a>&gt;
     592</pre><div id="rfc.figure.u.2"></div><pre class="inline">  <a href="#notation" class="smpl">token</a>      = &lt;token, defined in <a href="#Part1" id="rfc.xref.Part1.6"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 1.2.2</a>&gt;
     593  <a href="#notation" class="smpl">OWS</a>        = &lt;OWS, defined in <a href="#Part1" id="rfc.xref.Part1.7"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#basic.rules" title="Basic Rules">Section 1.2.2</a>&gt;
    593594</pre><div id="abnf.dependencies">
    594595         <p id="rfc.section.2.p.4">    The ABNF rules below are defined in other parts:</p>
    595596      </div>
    596       <div id="rfc.figure.u.3"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">HTTP-date</a>  = &lt;HTTP-date, defined in <a href="#Part1" id="rfc.xref.Part1.7"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#full.date" title="Full Date">Section 3.3.1</a>&gt;
     597      <div id="rfc.figure.u.3"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">HTTP-date</a>  = &lt;HTTP-date, defined in <a href="#Part1" id="rfc.xref.Part1.8"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="p1-messaging.html#full.date" title="Full Date">Section 3.2.1</a>&gt;
    597598</pre><div id="rfc.figure.u.4"></div><pre class="inline">  <a href="#abnf.dependencies" class="smpl">entity-tag</a> = &lt;entity-tag, defined in <a href="#Part4" id="rfc.xref.Part4.1"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>, <a href="p4-conditional.html#entity.tags" title="Entity Tags">Section 3</a>&gt;
    598599</pre><h1 id="rfc.section.3"><a href="#rfc.section.3">3.</a>&nbsp;<a id="range.units" href="#range.units">Range Units</a></h1>
     
    603604  <a href="#range.units" class="smpl">bytes-unit</a>       = "bytes"
    604605  <a href="#range.units" class="smpl">other-range-unit</a> = <a href="#notation" class="smpl">token</a>
    605 </pre><p id="rfc.section.3.p.3">The only range unit defined by HTTP/1.1 is "bytes". HTTP/1.1 implementations <em class="bcp14">MAY</em> ignore ranges specified using other units.
    606       </p>
    607       <p id="rfc.section.3.p.4">HTTP/1.1 has been designed to allow implementations of applications that do not depend on knowledge of ranges.</p>
     606</pre><p id="rfc.section.3.p.3">HTTP/1.1 has been designed to allow implementations of applications that do not depend on knowledge of ranges. The only range
     607         unit defined by HTTP/1.1 is "bytes".
     608      </p>
     609      <p id="rfc.section.3.p.4">If a range unit is not understood in a request, a server <em class="bcp14">MUST</em> ignore the whole Range header (<a href="#header.range" id="rfc.xref.header.range.2" title="Range">Section&nbsp;6.4</a>). If a range unit is not understood in a response, an intermediary <em class="bcp14">SHOULD</em> pass the response to the client; a client <em class="bcp14">MUST</em> fail.
     610      </p>
    608611      <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;Status Code Definitions
    609612      </h1>
     
    611614      <div id="rfc.iref.s.1"></div>
    612615      <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a>&nbsp;<a id="status.206" href="#status.206">206 Partial Content</a></h2>
    613       <p id="rfc.section.4.1.p.1">The server has fulfilled the partial GET request for the resource. The request <em class="bcp14">MUST</em> have included a Range header field (<a href="#header.range" id="rfc.xref.header.range.2" title="Range">Section&nbsp;6.4</a>) indicating the desired range, and <em class="bcp14">MAY</em> have included an If-Range header field (<a href="#header.if-range" id="rfc.xref.header.if-range.1" title="If-Range">Section&nbsp;6.3</a>) to make the request conditional.
     616      <p id="rfc.section.4.1.p.1">The server has fulfilled the partial GET request for the resource. The request <em class="bcp14">MUST</em> have included a Range header field (<a href="#header.range" id="rfc.xref.header.range.3" title="Range">Section&nbsp;6.4</a>) indicating the desired range, and <em class="bcp14">MAY</em> have included an If-Range header field (<a href="#header.if-range" id="rfc.xref.header.if-range.1" title="If-Range">Section&nbsp;6.3</a>) to make the request conditional.
    614617      </p>
    615618      <p id="rfc.section.4.1.p.2">The response <em class="bcp14">MUST</em> include the following header fields:
     
    627630      <p id="rfc.section.4.1.p.3">If the 206 response is the result of an If-Range request, the response <em class="bcp14">SHOULD NOT</em> include other entity-headers. Otherwise, the response <em class="bcp14">MUST</em> include all of the entity-headers that would have been returned with a 200 (OK) response to the same request.
    628631      </p>
    629       <p id="rfc.section.4.1.p.4">A cache <em class="bcp14">MUST NOT</em> combine a 206 response with other previously cached content if the ETag or Last-Modified headers do not match exactly, see <a href="#combining.byte.ranges" title="Combining Byte Ranges">Section&nbsp;5</a>.
    630       </p>
    631       <p id="rfc.section.4.1.p.5">A cache that does not support the Range and Content-Range headers <em class="bcp14">MUST NOT</em> cache 206 (Partial Content) responses.
     632      <p id="rfc.section.4.1.p.4">A cache <em class="bcp14">MUST NOT</em> combine a 206 response with other previously cached content if the ETag or Last-Modified headers do not match exactly, see <a href="#combining.byte.ranges" title="Combining Ranges">Section&nbsp;5</a>.
     633      </p>
     634      <p id="rfc.section.4.1.p.5">A cache that does not support the Range and Content-Range headers <em class="bcp14">MUST NOT</em> cache 206 (Partial Content) responses. Furthermore, if a response uses a range unit that is not understood by the cache, then
     635         it <em class="bcp14">MUST NOT</em> be cached either.
    632636      </p>
    633637      <div id="rfc.iref.4"></div>
    634638      <div id="rfc.iref.s.2"></div>
    635639      <h2 id="rfc.section.4.2"><a href="#rfc.section.4.2">4.2</a>&nbsp;<a id="status.416" href="#status.416">416 Requested Range Not Satisfiable</a></h2>
    636       <p id="rfc.section.4.2.p.1">A server <em class="bcp14">SHOULD</em> return a response with this status code if a request included a Range request-header field (<a href="#header.range" id="rfc.xref.header.range.3" title="Range">Section&nbsp;6.4</a>), and none of the ranges-specifier values in this field overlap the current extent of the selected resource, and the request
     640      <p id="rfc.section.4.2.p.1">A server <em class="bcp14">SHOULD</em> return a response with this status code if a request included a Range request-header field (<a href="#header.range" id="rfc.xref.header.range.4" title="Range">Section&nbsp;6.4</a>), and none of the ranges-specifier values in this field overlap the current extent of the selected resource, and the request
    637641         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
    638642         values were greater than the current length of the selected resource.)
     
    640644      <p id="rfc.section.4.2.p.2">When this status code is returned for a byte-range request, the response <em class="bcp14">SHOULD</em> include a Content-Range entity-header field specifying the current length of the selected resource (see <a href="#header.content-range" id="rfc.xref.header.content-range.3" title="Content-Range">Section&nbsp;6.2</a>). This response <em class="bcp14">MUST NOT</em> use the multipart/byteranges content-type.
    641645      </p>
    642       <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a id="combining.byte.ranges" href="#combining.byte.ranges">Combining Byte Ranges</a></h1>
    643       <p id="rfc.section.5.p.1">A response might transfer only a subrange of the bytes of an entity-body, either because the request included one or more
    644          Range specifications, or because a connection was broken prematurely. After several such transfers, a cache might have received
    645          several ranges of the same entity-body.
     646      <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a>&nbsp;<a id="combining.byte.ranges" href="#combining.byte.ranges">Combining Ranges</a></h1>
     647      <p id="rfc.section.5.p.1">A response might transfer only a subrange of an entity-body, either the request included one or more Range specifications,
     648         or because a connection was broken prematurely. After several such transfers, a cache might have received several ranges of
     649         the same entity-body.
    646650      </p>
    647651      <p id="rfc.section.5.p.2">If a cache has a stored non-empty set of subranges for an entity, and an incoming response transfers another subrange, the
     
    671675      </p>
    672676      <div id="rfc.figure.u.7"></div><pre class="text">  Accept-Ranges: bytes
    673 </pre><p id="rfc.section.6.1.p.5">but are not required to do so. Clients <em class="bcp14">MAY</em> generate byte-range requests without having received this header for the resource involved. Range units are defined in <a href="#range.units" title="Range Units">Section&nbsp;3</a>.
     677</pre><p id="rfc.section.6.1.p.5">but are not required to do so. Clients <em class="bcp14">MAY</em> generate range requests without having received this header for the resource involved. Range units are defined in <a href="#range.units" title="Range Units">Section&nbsp;3</a>.
    674678      </p>
    675679      <p id="rfc.section.6.1.p.6">Servers that do not accept any kind of range request for a resource <em class="bcp14">MAY</em> send
     
    687691 
    688692  <a href="#header.content-range" class="smpl">content-range-spec</a>      = <a href="#header.content-range" class="smpl">byte-content-range-spec</a>
     693                              / <a href="#header.content-range" class="smpl">other-content-range-spec</a>
    689694  <a href="#header.content-range" class="smpl">byte-content-range-spec</a> = <a href="#range.units" class="smpl">bytes-unit</a> <a href="#notation" class="smpl">SP</a>
    690695                            <a href="#header.content-range" class="smpl">byte-range-resp-spec</a> "/"
     
    695700                         
    696701  <a href="#header.content-range" class="smpl">instance-length</a>         = 1*<a href="#notation" class="smpl">DIGIT</a>
     702 
     703  <a href="#header.content-range" class="smpl">other-content-range-spec</a> = <a href="#range.units" class="smpl">other-range-unit</a> <a href="#notation" class="smpl">SP</a>
     704                             <a href="#header.content-range" class="smpl">other-range-resp-spec</a>
     705  <a href="#header.content-range" class="smpl">other-range-resp-spec</a>    = *<a href="#notation" class="smpl">CHAR</a>
    697706</pre><p id="rfc.section.6.2.p.3">The header <em class="bcp14">SHOULD</em> indicate the total length of the full entity-body, unless this length is unknown or difficult to determine. The asterisk "*"
    698707         character means that the instance-length is unknown at the time when the response was generated.
     
    703712         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 <em class="bcp14">MUST</em> ignore it and any content transferred along with it.
    704713      </p>
    705       <p id="rfc.section.6.2.p.6">A server sending a response with status code 416 (Requested range not satisfiable) <em class="bcp14">SHOULD</em> include a Content-Range field with a byte-range-resp-spec of "*". The instance-length specifies the current length of the
     714      <p id="rfc.section.6.2.p.6">In the case of a byte range request: A server sending a response with status code 416 (Requested range not satisfiable) <em class="bcp14">SHOULD</em> include a Content-Range field with a byte-range-resp-spec of "*". The instance-length specifies the current length of the
    706715         selected resource. A response with status code 206 (Partial Content) <em class="bcp14">MUST NOT</em> include a Content-Range field with a byte-range-resp-spec of "*".
    707716      </p>
     
    735744         as defined in <a href="#internet.media.type.multipart.byteranges" title="Internet Media Type multipart/byteranges">Appendix&nbsp;A</a>. See <a href="#changes.from.rfc.2068" title="Changes from RFC 2068">Appendix&nbsp;B.1</a> for a compatibility issue.
    736745      </p>
    737       <p id="rfc.section.6.2.p.11">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 byte-ranges in a single request.
     746      <p id="rfc.section.6.2.p.11">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.
    738747      </p>
    739748      <p id="rfc.section.6.2.p.12">When a client requests multiple byte-ranges in one request, the server <em class="bcp14">SHOULD</em> return them in the order that they appeared in the request.
     
    779788      <p id="rfc.section.6.4.1.p.2">Byte range specifications in HTTP apply to the sequence of bytes in the entity-body (not necessarily the same as the message-body).</p>
    780789      <div id="rule.ranges-specifier">
    781          <p id="rfc.section.6.4.1.p.3">                A byte range operation <em class="bcp14">MAY</em> specify a single range of bytes, or a set of ranges within a single entity.
     790         <p id="rfc.section.6.4.1.p.3">                  A byte range operation <em class="bcp14">MAY</em> specify a single range of bytes, or a set of ranges within a single entity.
    782791         </p>
    783792      </div>
    784       <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span><span id="rfc.iref.g.19"></span><span id="rfc.iref.g.20"></span>  <a href="#rule.ranges-specifier" class="smpl">ranges-specifier</a> = <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a>
    785   <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> = <a href="#range.units" class="smpl">bytes-unit</a> "=" <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a>
     793      <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span><span id="rfc.iref.g.18"></span><span id="rfc.iref.g.19"></span><span id="rfc.iref.g.20"></span>  <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a> = <a href="#range.units" class="smpl">bytes-unit</a> "=" <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a>
    786794  <a href="#rule.ranges-specifier" class="smpl">byte-range-set</a>  = 1#( <a href="#rule.ranges-specifier" class="smpl">byte-range-spec</a> / <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a> )
    787795  <a href="#rule.ranges-specifier" class="smpl">byte-range-spec</a> = <a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> "-" [<a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a>]
     
    823831         to the entity returned as the result of the request:
    824832      </p>
    825       <div id="rfc.figure.u.18"></div><pre class="inline"><span id="rfc.iref.g.23"></span><span id="rfc.iref.g.24"></span>  <a href="#range.retrieval.requests" class="smpl">Range</a>   = "Range" ":" <a href="#notation" class="smpl">OWS</a> <a href="#range.retrieval.requests" class="smpl">Range-v</a>
    826   <a href="#range.retrieval.requests" class="smpl">Range-v</a> = <a href="#rule.ranges-specifier" class="smpl">ranges-specifier</a>
     833      <div id="rfc.figure.u.18"></div><pre class="inline"><span id="rfc.iref.g.23"></span>  <a href="#range.retrieval.requests" class="smpl">Range</a> = "Range" ":" <a href="#rule.ranges-specifier" class="smpl">ranges-specifier</a>
     834  <a href="#rule.ranges-specifier" class="smpl">ranges-specifier</a>       = <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a>
     835                           / <a href="#rule.ranges-specifier" class="smpl">other-ranges-specifier</a>
     836  <a href="#rule.ranges-specifier" class="smpl">other-ranges-specifier</a> = 1*<a href="#notation" class="smpl">CHAR</a>
    827837</pre><p id="rfc.section.6.4.2.p.3">A server <em class="bcp14">MAY</em> ignore the Range header. However, HTTP/1.1 origin servers and intermediate caches ought to support byte ranges when possible,
    828838         since Range supports efficient recovery from partially failed transfers, and supports efficient partial retrieval of large
     
    885895                  <td>http</td>
    886896                  <td>standard</td>
    887                   <td> <a href="#header.range" id="rfc.xref.header.range.4" title="Range">Section&nbsp;6.4</a>
     897                  <td> <a href="#header.range" id="rfc.xref.header.range.5" title="Range">Section&nbsp;6.4</a>
    888898                  </td>
    889899               </tr>
     
    893903      <p id="rfc.section.7.1.p.2">The change controller is: "IETF (iesg@ietf.org) - Internet Engineering Task Force".</p>
    894904      <h1 id="rfc.section.8"><a href="#rfc.section.8">8.</a>&nbsp;<a id="security.considerations" href="#security.considerations">Security Considerations</a></h1>
    895       <p id="rfc.section.8.p.1">No additional security considerations have been identified beyond those applicable to HTTP in general <a href="#Part1" id="rfc.xref.Part1.8"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
     905      <p id="rfc.section.8.p.1">No additional security considerations have been identified beyond those applicable to HTTP in general <a href="#Part1" id="rfc.xref.Part1.9"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>.
    896906      </p>
    897907      <h1 id="rfc.section.9"><a href="#rfc.section.9">9.</a>&nbsp;<a id="ack" href="#ack">Acknowledgments</a></h1>
     
    10491059      <p id="rfc.section.B.1.p.1">Transfer-coding and message lengths all interact in ways that required fixing exactly when chunked encoding is used (to allow
    10501060         for transfer encoding that may not be self delimiting); it was important to straighten out exactly how message lengths are
    1051          computed. (<a href="#header.content-range" id="rfc.xref.header.content-range.5" title="Content-Range">Section&nbsp;6.2</a>, see also <a href="#Part1" id="rfc.xref.Part1.9"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="#Part3" id="rfc.xref.Part3.1"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a> and <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>)
     1061         computed. (<a href="#header.content-range" id="rfc.xref.header.content-range.5" title="Content-Range">Section&nbsp;6.2</a>, see also <a href="#Part1" id="rfc.xref.Part1.10"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>, <a href="#Part3" id="rfc.xref.Part3.1"><cite title="HTTP/1.1, part 3: Message Payload and Content Negotiation">[Part3]</cite></a> and <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>)
    10521062      </p>
    10531063      <p id="rfc.section.B.1.p.2">There are situations where a server (especially a proxy) does not know the full length of a response but is capable of serving
     
    11841194                        <li class="indline1"><tt>Range</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.23"><b>6.4.2</b></a></li>
    11851195                        <li class="indline1"><tt>range-unit</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.1"><b>3</b></a></li>
    1186                         <li class="indline1"><tt>Range-v</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.24"><b>6.4.2</b></a></li>
    11871196                        <li class="indline1"><tt>ranges-specifier</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.15"><b>6.4.1</b></a></li>
    11881197                        <li class="indline1"><tt>suffix-byte-range-spec</tt>&nbsp;&nbsp;<a class="iref" href="#rfc.iref.g.21"><b>6.4.1</b></a></li>
     
    11981207                        <li class="indline1">Content-Range&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.content-range.1">3</a>, <a class="iref" href="#rfc.xref.header.content-range.2">4.1</a>, <a class="iref" href="#rfc.xref.header.content-range.3">4.2</a>, <a class="iref" href="#rfc.iref.h.2"><b>6.2</b></a>, <a class="iref" href="#rfc.xref.header.content-range.4">7.1</a>, <a class="iref" href="#rfc.xref.header.content-range.5">B.1</a>, <a class="iref" href="#rfc.xref.header.content-range.6">B.1</a>, <a class="iref" href="#rfc.xref.header.content-range.7">B.1</a></li>
    11991208                        <li class="indline1">If-Range&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.if-range.1">4.1</a>, <a class="iref" href="#rfc.iref.h.3"><b>6.3</b></a>, <a class="iref" href="#rfc.xref.header.if-range.2">6.4.2</a>, <a class="iref" href="#rfc.xref.header.if-range.3">7.1</a>, <a class="iref" href="#rfc.xref.header.if-range.4">B.1</a></li>
    1200                         <li class="indline1">Range&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.range.1">3</a>, <a class="iref" href="#rfc.xref.header.range.2">4.1</a>, <a class="iref" href="#rfc.xref.header.range.3">4.2</a>, <a class="iref" href="#rfc.iref.h.4"><b>6.4</b></a>, <a class="iref" href="#rfc.xref.header.range.4">7.1</a></li>
     1209                        <li class="indline1">Range&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.range.1">3</a>, <a class="iref" href="#rfc.xref.header.range.2">3</a>, <a class="iref" href="#rfc.xref.header.range.3">4.1</a>, <a class="iref" href="#rfc.xref.header.range.4">4.2</a>, <a class="iref" href="#rfc.iref.h.4"><b>6.4</b></a>, <a class="iref" href="#rfc.xref.header.range.5">7.1</a></li>
    12011210                     </ul>
    12021211                  </li>
     
    12191228            </li>
    12201229            <li class="indline0"><a id="rfc.index.P" href="#rfc.index.P"><b>P</b></a><ul class="ind">
    1221                   <li class="indline1"><em>Part1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a>, <a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a>, <a class="iref" href="#rfc.xref.Part1.7">2</a>, <a class="iref" href="#rfc.xref.Part1.8">8</a>, <a class="iref" href="#Part1"><b>10.1</b></a>, <a class="iref" href="#rfc.xref.Part1.9">B.1</a><ul class="ind">
    1222                         <li class="indline1"><em>Section 2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a></li>
    1223                         <li class="indline1"><em>Section 2.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a></li>
    1224                         <li class="indline1"><em>Section 3.3.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.7">2</a></li>
     1230                  <li class="indline1"><em>Part1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a>, <a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a>, <a class="iref" href="#rfc.xref.Part1.7">2</a>, <a class="iref" href="#rfc.xref.Part1.8">2</a>, <a class="iref" href="#rfc.xref.Part1.9">8</a>, <a class="iref" href="#Part1"><b>10.1</b></a>, <a class="iref" href="#rfc.xref.Part1.10">B.1</a><ul class="ind">
     1231                        <li class="indline1"><em>Section 1.2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.1">2</a></li>
     1232                        <li class="indline1"><em>Section 1.2.2</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.2">2</a>, <a class="iref" href="#rfc.xref.Part1.3">2</a>, <a class="iref" href="#rfc.xref.Part1.4">2</a>, <a class="iref" href="#rfc.xref.Part1.5">2</a>, <a class="iref" href="#rfc.xref.Part1.6">2</a>, <a class="iref" href="#rfc.xref.Part1.7">2</a></li>
     1233                        <li class="indline1"><em>Section 3.2.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.Part1.8">2</a></li>
    12251234                     </ul>
    12261235                  </li>
     
    12351244            </li>
    12361245            <li class="indline0"><a id="rfc.index.R" href="#rfc.index.R"><b>R</b></a><ul class="ind">
    1237                   <li class="indline1">Range header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.range.1">3</a>, <a class="iref" href="#rfc.xref.header.range.2">4.1</a>, <a class="iref" href="#rfc.xref.header.range.3">4.2</a>, <a class="iref" href="#rfc.iref.r.1"><b>6.4</b></a>, <a class="iref" href="#rfc.xref.header.range.4">7.1</a></li>
     1246                  <li class="indline1">Range header&nbsp;&nbsp;<a class="iref" href="#rfc.xref.header.range.1">3</a>, <a class="iref" href="#rfc.xref.header.range.2">3</a>, <a class="iref" href="#rfc.xref.header.range.3">4.1</a>, <a class="iref" href="#rfc.xref.header.range.4">4.2</a>, <a class="iref" href="#rfc.iref.r.1"><b>6.4</b></a>, <a class="iref" href="#rfc.xref.header.range.5">7.1</a></li>
    12381247                  <li class="indline1"><em>RFC2046</em>&nbsp;&nbsp;<a class="iref" href="#RFC2046"><b>10.1</b></a>, <a class="iref" href="#rfc.xref.RFC2046.1">A</a>, <a class="iref" href="#rfc.xref.RFC2046.2">A</a><ul class="ind">
    12391248                        <li class="indline1"><em>Section 5.1</em>&nbsp;&nbsp;<a class="iref" href="#rfc.xref.RFC2046.1">A</a></li>
Note: See TracChangeset for help on using the changeset viewer.