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.xml

    r382 r393  
    252252
    253253<section title="Notational Conventions and Generic Grammar" anchor="notation">
     254  <x:anchor-alias value="CHAR"/>
    254255  <x:anchor-alias value="DIGIT"/>
    255256  <x:anchor-alias value="SP"/>
     
    261262</t>
    262263<figure><artwork type="abnf2616">
     264  <x:ref>CHAR</x:ref>       = &lt;CHAR, defined in &basic-rules;&gt;
    263265  <x:ref>DIGIT</x:ref>      = &lt;DIGIT, defined in &basic-rules;&gt;
    264266  <x:ref>SP</x:ref>         = &lt;SP, defined in &basic-rules;&gt;
     
    298300</artwork></figure>
    299301<t>
    300    The only range unit defined by HTTP/1.1 is "bytes". HTTP/1.1
    301    implementations &MAY; ignore ranges specified using other units.
    302 </t>
    303 <t>
    304    HTTP/1.1 has been designed to allow implementations of applications
    305    that do not depend on knowledge of ranges.
     302  HTTP/1.1 has been designed to allow implementations of applications
     303  that do not depend on knowledge of ranges. The only range unit defined
     304  by HTTP/1.1 is "bytes".
     305</t>
     306<t>
     307  If a range unit is not understood in a request, a server &MUST; ignore
     308  the whole Range header (<xref target="header.range" />).
     309  If a range unit is not understood in a response, an intermediary
     310  &SHOULD; pass the response to the client; a client &MUST; fail.
    306311</t>
    307312</section>
     
    355360<t>
    356361   A cache that does not support the Range and Content-Range headers
    357    &MUST-NOT; cache 206 (Partial Content) responses.
     362   &MUST-NOT; cache 206 (Partial Content) responses. Furthermore,
     363   if a response uses a range unit that is not understood by the cache,
     364   then it &MUST-NOT; be cached either.
    358365</t>
    359366</section>
     
    380387</section>
    381388
    382 <section title="Combining Byte Ranges" anchor="combining.byte.ranges">
    383 <t>
    384    A response might transfer only a subrange of the bytes of an entity-body,
    385    either because the request included one or more Range
    386    specifications, or because a connection was broken prematurely. After
    387    several such transfers, a cache might have received several ranges of
    388    the same entity-body.
     389<section title="Combining Ranges" anchor="combining.byte.ranges">
     390<t>
     391   A response might transfer only a subrange of an entity-body, either
     392   the request included one or more Range specifications, or because
     393   a connection was broken prematurely.
     394   After several such transfers, a cache might have received several
     395   ranges of the same entity-body.
    389396</t>
    390397<t>
     
    440447</artwork></figure>
    441448<t>
    442       but are not required to do so. Clients &MAY; generate byte-range
     449      but are not required to do so. Clients &MAY; generate range
    443450      requests without having received this header for the resource
    444451      involved. Range units are defined in <xref target="range.units"/>.
     
    465472  <x:anchor-alias value="content-range-spec"/>
    466473  <x:anchor-alias value="instance-length"/>
     474  <x:anchor-alias value="other-content-range-spec"/>
     475  <x:anchor-alias value="other-range-resp-spec"/>
    467476<t>
    468477   The entity-header "Content-Range" is sent with a partial entity-body to
     
    475484 
    476485  <x:ref>content-range-spec</x:ref>      = <x:ref>byte-content-range-spec</x:ref>
     486                              / <x:ref>other-content-range-spec</x:ref>
    477487  <x:ref>byte-content-range-spec</x:ref> = <x:ref>bytes-unit</x:ref> <x:ref>SP</x:ref>
    478488                            <x:ref>byte-range-resp-spec</x:ref> "/"
     
    483493                         
    484494  <x:ref>instance-length</x:ref>         = 1*<x:ref>DIGIT</x:ref>
     495 
     496  <x:ref>other-content-range-spec</x:ref> = <x:ref>other-range-unit</x:ref> <x:ref>SP</x:ref>
     497                             <x:ref>other-range-resp-spec</x:ref>
     498  <x:ref>other-range-resp-spec</x:ref>    = *<x:ref>CHAR</x:ref>
    485499</artwork></figure>
    486500<t>
     
    504518</t>
    505519<t>
     520   In the case of a byte range request:
    506521   A server sending a response with status code 416 (Requested range not
    507522   satisfiable) &SHOULD; include a Content-Range field with a byte-range-resp-spec
     
    568583   multipart/byteranges media type with one part. A client that cannot
    569584   decode a multipart/byteranges message &MUST-NOT; ask for multiple
    570    byte-ranges in a single request.
     585   ranges in a single request.
    571586</t>
    572587<t>
     
    663678  <x:anchor-alias value="suffix-byte-range-spec"/>
    664679  <x:anchor-alias value="suffix-length"/>
     680  <x:anchor-alias value="other-ranges-specifier"/>
     681
    665682   A byte range operation &MAY; specify a single range of bytes, or a set
    666683   of ranges within a single entity.
    667684</t>
    668685<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="ranges-specifier"/><iref primary="true" item="Grammar" subitem="byte-ranges-specifier"/><iref primary="true" item="Grammar" subitem="byte-range-set"/><iref primary="true" item="Grammar" subitem="byte-range-spec"/><iref primary="true" item="Grammar" subitem="first-byte-pos"/><iref primary="true" item="Grammar" subitem="last-byte-pos"/>
    669   <x:ref>ranges-specifier</x:ref> = <x:ref>byte-ranges-specifier</x:ref>
    670686  <x:ref>byte-ranges-specifier</x:ref> = <x:ref>bytes-unit</x:ref> "=" <x:ref>byte-range-set</x:ref>
    671687  <x:ref>byte-range-set</x:ref>  = 1#( <x:ref>byte-range-spec</x:ref> / <x:ref>suffix-byte-range-spec</x:ref> )
     
    753769   the entity returned as the result of the request:
    754770</t>
    755 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Range"/><iref primary="true" item="Grammar" subitem="Range-v"/>
    756   <x:ref>Range</x:ref>   = "Range" ":" <x:ref>OWS</x:ref> <x:ref>Range-v</x:ref>
    757   <x:ref>Range-v</x:ref> = <x:ref>ranges-specifier</x:ref>
     771<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Range"/>
     772  <x:ref>Range</x:ref> = "Range" ":" <x:ref>ranges-specifier</x:ref>
     773  <x:ref>ranges-specifier</x:ref>       = <x:ref>byte-ranges-specifier</x:ref>
     774                           / <x:ref>other-ranges-specifier</x:ref>
     775  <x:ref>other-ranges-specifier</x:ref> = 1*<x:ref>CHAR</x:ref>
    758776</artwork></figure>
    759777<t>
     
    14001418<section title="Since draft-ietf-httpbis-p5-range-05" anchor="changes.since.05">
    14011419<t>
     1420  Ongoing work on Custom Ranges (<eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/85"/>):
     1421  <list style="symbols">
     1422    <t>
     1423      Remove bias in favor of byte ranges; allow custom ranges in ABNF.
     1424    </t>
     1425  </list>
    14021426</t>
    14031427</section>
Note: See TracChangeset for help on using the changeset viewer.