Ignore:
Timestamp:
Nov 12, 2008, 4:21:26 PM (11 years ago)
Author:
ylafon@…
Message:

anges relative to issue #85
removed the bias toward byte-ranges only in text that can be applied to other ranges units
fixed the BNF

File:
1 edited

Legend:

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

    r348 r355  
    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">
     
    377377      <link rel="Appendix" title="B Compatibility with Previous Versions" href="#rfc.section.B">
    378378      <link rel="Appendix" title="C Change Log (to be removed by RFC Editor before publication)" href="#rfc.section.C">
    379       <meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.400, 2008-10-10 14:04:14, XSLT vendor: SAXON 8.9 from Saxonica http://www.saxonica.com/">
     379      <meta name="generator" content="http://greenbytes.de/tech/webdav/rfc2629.xslt, Revision 1.400, 2008-10-10 14:04:14, XSLT vendor: SAXON 8.9.0.4 from Saxonica http://www.saxonica.com/">
    380380      <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/">
    381381      <meta name="DC.Creator" content="Fielding, R.">
     
    473473         <tr>
    474474            <td class="header left"></td>
    475             <td class="header right">November 12, 2008</td>
     475            <td class="header right">November 13, 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>
     
    625625      <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.
    626626      </p>
    627       <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>.
    628       </p>
    629       <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.
     627      <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>.
     628      </p>
     629      <p id="rfc.section.4.1.p.5">A cache that does not support the Range and Content-Range headers or the range unit <em class="bcp14">MUST NOT</em> cache 206 (Partial Content) responses.
    630630      </p>
    631631      <div id="rfc.iref.4"></div>
    632632      <div id="rfc.iref.s.2"></div>
    633633      <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>
    634       <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 range-specifier values in this field overlap the current extent of the selected resource, and the request
     634      <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
    635635         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
    636636         values were greater than the current length of the selected resource.)
     
    638638      <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.
    639639      </p>
    640       <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>
    641       <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
    642          Range specifications, or because a connection was broken prematurely. After several such transfers, a cache might have received
    643          several ranges of the same entity-body.
     640      <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>
     641      <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,
     642         or because a connection was broken prematurely. After several such transfers, a cache might have received several ranges of
     643         the same entity-body.
    644644      </p>
    645645      <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
     
    668668      </p>
    669669      <div id="rfc.figure.u.7"></div><pre class="text">       Accept-Ranges: bytes
    670 </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>.
     670</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>.
    671671      </p>
    672672      <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
     
    682682      <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g.6"></span><span id="rfc.iref.g.7"></span><span id="rfc.iref.g.8"></span><span id="rfc.iref.g.9"></span><span id="rfc.iref.g.10"></span>  <a href="#header.content-range" class="smpl">Content-Range</a> = "Content-Range" ":" <a href="#header.content-range" class="smpl">content-range-spec</a>
    683683 
    684   <a href="#header.content-range" class="smpl">content-range-spec</a>      = <a href="#header.content-range" class="smpl">byte-content-range-spec</a>
    685   <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>
    686                             <a href="#header.content-range" class="smpl">byte-range-resp-spec</a> "/"
    687                             ( <a href="#header.content-range" class="smpl">instance-length</a> / "*" )
     684  <a href="#header.content-range" class="smpl">content-range-spec</a>       = <a href="#header.content-range" class="smpl">byte-content-range-spec</a>
     685                             / <a href="#header.content-range" class="smpl">other-content-range-spec</a>
     686  <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>
     687                             <a href="#header.content-range" class="smpl">byte-range-resp-spec</a> "/"
     688                             ( <a href="#header.content-range" class="smpl">instance-length</a> / "*" )
    688689 
    689   <a href="#header.content-range" class="smpl">byte-range-resp-spec</a>    = (<a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> "-" <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a>)
    690                           / "*"
     690  <a href="#header.content-range" class="smpl">byte-range-resp-spec</a>     = (<a href="#rule.ranges-specifier" class="smpl">first-byte-pos</a> "-" <a href="#rule.ranges-specifier" class="smpl">last-byte-pos</a>)
     691                             / "*"
    691692                         
    692   <a href="#header.content-range" class="smpl">instance-length</a>         = 1*<a href="#notation" class="smpl">DIGIT</a>
     693  <a href="#header.content-range" class="smpl">instance-length</a>          = 1*<a href="#notation" class="smpl">DIGIT</a>
     694 
     695  <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>
     696                             <a href="#header.content-range" class="smpl">other-range-resp-spec</a>
     697  <a href="#header.content-range" class="smpl">other-range-resp-spec</a>    = *<a href="#notation" class="smpl">CHAR</a>
    693698</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 "*"
    694699         character means that the instance-length is unknown at the time when the response was generated.
     
    699704         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.
    700705      </p>
    701       <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
     706      <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
    702707         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 "*".
    703708      </p>
     
    731736         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.
    732737      </p>
    733       <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.
     738      <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.
    734739      </p>
    735740      <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.
     
    774779      <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>
    775780      <div id="rule.ranges-specifier">
    776          <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.
     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.
    777782         </p>
    778783      </div>
    779       <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span>  <a href="#rule.ranges-specifier" class="smpl">ranges-specifier</a> = <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a>
    780   <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>
     784      <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></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>
    781785  <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> )
    782786  <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>]
     
    795799      <p id="rfc.section.6.4.1.p.8">By its choice of last-byte-pos, a client can limit the number of bytes retrieved without knowing the size of the entity.</p>
    796800      <div id="rfc.figure.u.17"></div><pre class="inline"><span id="rfc.iref.g.18"></span><span id="rfc.iref.g.19"></span>  <a href="#rule.ranges-specifier" class="smpl">suffix-byte-range-spec</a> = "-" <a href="#rule.ranges-specifier" class="smpl">suffix-length</a>
    797   <a href="#rule.ranges-specifier" class="smpl">suffix-length</a> = 1*<a href="#notation" class="smpl">DIGIT</a>
     801  <a href="#rule.ranges-specifier" class="smpl">suffix-length</a>          = 1*<a href="#notation" class="smpl">DIGIT</a>
    798802</pre><p id="rfc.section.6.4.1.p.10">A suffix-byte-range-spec is used to specify the suffix of the entity-body, of a length given by the suffix-length value. (That
    799803         is, this form specifies the last N bytes of an entity-body.) If the entity is shorter than the specified suffix-length, the
     
    819823      </p>
    820824      <div id="rfc.figure.u.18"></div><pre class="inline"><span id="rfc.iref.g.20"></span>  <a href="#range.retrieval.requests" class="smpl">Range</a> = "Range" ":" <a href="#rule.ranges-specifier" class="smpl">ranges-specifier</a>
     825  <a href="#rule.ranges-specifier" class="smpl">ranges-specifier</a>       = <a href="#rule.ranges-specifier" class="smpl">byte-ranges-specifier</a>
     826                           / <a href="#rule.ranges-specifier" class="smpl">other-ranges-specifier</a>
     827  <a href="#rule.ranges-specifier" class="smpl">other-ranges-specifier</a> = 1*<a href="#notation" class="smpl">CHAR</a>
    821828</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,
    822829         since Range supports efficient recovery from partially failed transfers, and supports efficient partial retrieval of large
Note: See TracChangeset for help on using the changeset viewer.