Changeset 2377 for draft-ietf-httpbis


Ignore:
Timestamp:
13/09/13 00:19:59 (7 years ago)
Author:
fielding@…
Message:

consistently refer to strong comparison in p4 instead of redefining it; addresses #489

Location:
draft-ietf-httpbis/latest
Files:
2 edited

Legend:

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

    r2369 r2377  
    446446  }
    447447  @bottom-center {
    448        content: "Expires March 8, 2014";
     448       content: "Expires March 16, 2014";
    449449  }
    450450  @bottom-right {
     
    489489      <meta name="dct.creator" content="Reschke, J. F.">
    490490      <meta name="dct.identifier" content="urn:ietf:id:draft-ietf-httpbis-p5-range-latest">
    491       <meta name="dct.issued" scheme="ISO8601" content="2013-09-04">
     491      <meta name="dct.issued" scheme="ISO8601" content="2013-09-12">
    492492      <meta name="dct.replaces" content="urn:ietf:rfc:2616">
    493493      <meta name="dct.abstract" content="The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypertext information systems. This document defines range requests and the rules for constructing and combining responses to those requests.">
     
    515515            </tr>
    516516            <tr>
    517                <td class="left">Expires: March 8, 2014</td>
     517               <td class="left">Expires: March 16, 2014</td>
    518518               <td class="right">J. Reschke, Editor</td>
    519519            </tr>
     
    524524            <tr>
    525525               <td class="left"></td>
    526                <td class="right">September 4, 2013</td>
     526               <td class="right">September 12, 2013</td>
    527527            </tr>
    528528         </tbody>
     
    549549         in progress”.
    550550      </p>
    551       <p>This Internet-Draft will expire on March 8, 2014.</p>
     551      <p>This Internet-Draft will expire on March 16, 2014.</p>
    552552      <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1>
    553553      <p>Copyright © 2013 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
     
    766766      <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a>&nbsp;<a id="header.if-range" href="#header.if-range">If-Range</a></h2>
    767767      <p id="rfc.section.3.2.p.1">If a client has a partial copy of a representation and wishes to have an up-to-date copy of the entire representation, it
    768          could use the <a href="#header.range" class="smpl">Range</a> header field with a conditional GET (using either or both of <a href="p4-conditional.html#header.if-unmodified-since" class="smpl">If-Unmodified-Since</a> and <a href="p4-conditional.html#header.if-match" class="smpl">If-Match</a>.) However, if the condition fails because the representation has been modified, the client would then have to make a second
     768         could use the <a href="#header.range" class="smpl">Range</a> header field with a conditional GET (using either or both of <a href="p4-conditional.html#header.if-unmodified-since" class="smpl">If-Unmodified-Since</a> and <a href="p4-conditional.html#header.if-match" class="smpl">If-Match</a>.) However, if the precondition fails because the representation has been modified, the client would then have to make a second
    769769         request to obtain the entire current representation.
    770770      </p>
     
    773773      </p>
    774774      <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.17"></span>  <a href="#header.if-range" class="smpl">If-Range</a> = <a href="#imported.abnf" class="smpl">entity-tag</a> / <a href="#imported.abnf" class="smpl">HTTP-date</a>
    775 </pre><p id="rfc.section.3.2.p.4">A client <em class="bcp14">MUST NOT</em> generate an If-Range header field containing an entity-tag that is marked as weak. A client <em class="bcp14">MUST NOT</em> generate an If-Range header field containing a <a href="p4-conditional.html#header.last-modified" class="smpl">Last-Modified</a> date unless the client has no entity-tag for the corresponding representation and the Last-Modified date is strong in the
    776          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.2"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>.
    777       </p>
    778       <p id="rfc.section.3.2.p.5">A server that evaluates a conditional range request that is applicable to one of its representations <em class="bcp14">MUST</em> evaluate the condition as false if the entity-tag used as a validator is marked as weak or, when an HTTP-date is used as the
    779          validator, if the date value is not 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.3"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>. (A server can distinguish between a valid HTTP-date and any form of entity-tag by examining the first two characters.)
    780       </p>
    781       <p id="rfc.section.3.2.p.6">A client <em class="bcp14">MUST NOT</em> generate an If-Range header field in a request that does not contain a <a href="#header.range" class="smpl">Range</a> header field. A server <em class="bcp14">MUST</em> ignore an If-Range header field received in a request that does not contain a <a href="#header.range" class="smpl">Range</a> header field. An origin server <em class="bcp14">MUST</em> ignore an If-Range header field received in a request for a target resource that does not support Range requests.
     775</pre><p id="rfc.section.3.2.p.4">A client <em class="bcp14">MUST NOT</em> generate an If-Range header field in a request that does not contain a <a href="#header.range" class="smpl">Range</a> header field. A server <em class="bcp14">MUST</em> ignore an If-Range header field received in a request that does not contain a <a href="#header.range" class="smpl">Range</a> header field. An origin server <em class="bcp14">MUST</em> ignore an If-Range header field received in a request for a target resource that does not support Range requests.
     776      </p>
     777      <p id="rfc.section.3.2.p.5">A client <em class="bcp14">MUST NOT</em> generate an If-Range header field containing an entity-tag that is marked as weak. A client <em class="bcp14">MUST NOT</em> generate an If-Range header field containing an <a href="#imported.abnf" class="smpl">HTTP-date</a> unless the client has no entity-tag for the corresponding representation and the date is a strong validator in the sense defined
     778         by <a href="p4-conditional.html#lastmod.comparison" title="Comparison">Section 2.2.2</a> of <a href="#Part4" id="rfc.xref.Part4.2"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>.
     779      </p>
     780      <p id="rfc.section.3.2.p.6">A server that evaluates an If-Range precondition <em class="bcp14">MUST</em> use the strong comparison function when comparing entity-tags (<a href="p4-conditional.html#entity.tag.comparison" title="Comparison">Section 2.3.2</a> of <a href="#Part4" id="rfc.xref.Part4.3"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>) and <em class="bcp14">MUST</em> evaluate the condition as false if an <a href="#imported.abnf" class="smpl">HTTP-date</a> validator is provided that is not a strong validator 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.4"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>. (A server can distinguish between a valid <a href="#imported.abnf" class="smpl">HTTP-date</a> and any form of entity-tag by examining the first two characters.)
    782781      </p>
    783782      <p id="rfc.section.3.2.p.7">If the validator given in the If-Range header field matches the current validator for the selected representation of the target
    784          resource, then the server <em class="bcp14">SHOULD</em> process the Range header field as requested. If the validator does not match, then the server <em class="bcp14">MUST</em> ignore the <a href="#header.range" class="smpl">Range</a> header field.
     783         resource, then the server <em class="bcp14">SHOULD</em> process the <a href="#header.range" class="smpl">Range</a> header field as requested. If the validator does not match, the server <em class="bcp14">MUST</em> ignore the <a href="#header.range" class="smpl">Range</a> header field.
    785784      </p>
    786785      <h1 id="rfc.section.4"><a href="#rfc.section.4">4.</a>&nbsp;<a id="range.response" href="#range.response">Responses to a Range Request</a></h1>
     
    842841         a prior response containing those header fields. Otherwise, the sender <em class="bcp14">MUST</em> generate all of the 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.
    843842      </p>
    844       <p id="rfc.section.4.1.p.12">A 206 response is cacheable unless otherwise indicated by explicit cache controls (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>).
     843      <p id="rfc.section.4.1.p.12">A 206 response is cacheable unless otherwise indicated by explicit cache controls (see <a href="p6-cache.html#heuristic.freshness" title="Calculating Heuristic Freshness">Section 4.2.2</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Caching">[Part6]</cite></a>).
    845844      </p>
    846845      <div id="rfc.iref.c.1"></div>
     
    902901      <p id="rfc.section.4.3.p.1">A response might transfer only a subrange of a representation if the connection closed prematurely or if the request used
    903902         one or more Range specifications. After several such transfers, a client might have received several ranges of the same representation.
    904          These ranges can only be safely combined if they all have in common the same strong validator, where "strong validator" is
    905          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         These ranges can only be safely combined if they all have in common the same strong validator (<a href="p4-conditional.html#weak.and.strong.validators" title="Weak versus Strong">Section 2.1</a> of <a href="#Part4" id="rfc.xref.Part4.5"><cite title="Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests">[Part4]</cite></a>).
    906904      </p>
    907905      <p id="rfc.section.4.3.p.2">A client that has received multiple partial responses to GET requests on a target resource <em class="bcp14">MAY</em> combine those responses into a larger continuous range if they share the same strong validator.
     
    14411439                     </ul>
    14421440                  </li>
    1443                   <li><em>Part4</em>&nbsp;&nbsp;<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.3</a>, <a href="#rfc.xref.Part4.5">4.3</a>, <a href="#Part4"><b>8.1</b></a>, <a href="#rfc.xref.Part4.6">C</a><ul>
    1444                         <li><em>Section 2.2.2</em>&nbsp;&nbsp;<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.3</a></li>
    1445                         <li><em>Section 2.3</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.4">4.3</a>, <a href="#rfc.xref.Part4.6">C</a></li>
     1441                  <li><em>Part4</em>&nbsp;&nbsp;<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">3.2</a>, <a href="#rfc.xref.Part4.5">4.3</a>, <a href="#Part4"><b>8.1</b></a>, <a href="#rfc.xref.Part4.6">C</a><ul>
     1442                        <li><em>Section 2.1</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.5">4.3</a></li>
     1443                        <li><em>Section 2.2.2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.2">3.2</a>, <a href="#rfc.xref.Part4.4">3.2</a></li>
     1444                        <li><em>Section 2.3</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.6">C</a></li>
     1445                        <li><em>Section 2.3.2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part4.3">3.2</a></li>
    14461446                     </ul>
    14471447                  </li>
    14481448                  <li><em>Part6</em>&nbsp;&nbsp;<a href="#rfc.xref.Part6.1">4.1</a>, <a href="#Part6"><b>8.1</b></a><ul>
    1449                         <li><em>Section 4.1.2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part6.1">4.1</a></li>
     1449                        <li><em>Section 4.2.2</em>&nbsp;&nbsp;<a href="#rfc.xref.Part6.1">4.1</a></li>
    14501450                     </ul>
    14511451                  </li>
  • draft-ietf-httpbis/latest/p5-range.xml

    r2369 r2377  
    2929  <!ENTITY entity-tags                "<xref target='Part4' x:rel='#header.etag' xmlns:x='http://purl.org/net/xml2rfc/ext'/>">
    3030  <!ENTITY weak-and-strong-validators "<xref target='Part4' x:rel='#weak.and.strong.validators' xmlns:x='http://purl.org/net/xml2rfc/ext'/>">
     31  <!ENTITY entity-tag-comparison      "<xref target='Part4' x:rel='#entity.tag.comparison' xmlns:x='http://purl.org/net/xml2rfc/ext'/>">
    3132  <!ENTITY lastmod-comparison         "<xref target='Part4' x:rel='#lastmod.comparison' xmlns:x='http://purl.org/net/xml2rfc/ext'/>">
    3233  <!ENTITY p6-heuristic               "<xref target='Part6' x:rel='#heuristic.freshness' xmlns:x='http://purl.org/net/xml2rfc/ext'/>">
     
    450451   <x:ref>Range</x:ref> header field with a conditional GET (using
    451452   either or both of <x:ref>If-Unmodified-Since</x:ref> and
    452    <x:ref>If-Match</x:ref>.) However, if the condition fails because the
     453   <x:ref>If-Match</x:ref>.) However, if the precondition fails because the
    453454   representation has been modified, the client would then have to make a
    454455   second request to obtain the entire current representation.
     
    463464  <x:ref>If-Range</x:ref> = <x:ref>entity-tag</x:ref> / <x:ref>HTTP-date</x:ref>
    464465</artwork></figure>
    465 <t>
    466    A client &MUST-NOT; generate an If-Range header field containing an
    467    entity-tag that is marked as weak.
    468    A client &MUST-NOT; generate an If-Range header field containing a
    469    <x:ref>Last-Modified</x:ref> date unless the client has no entity-tag for
    470    the corresponding representation and the Last-Modified date is strong
    471    in the sense defined by &lastmod-comparison;.
    472 </t>
    473 <t>
    474    A server that evaluates a conditional range request that is applicable
    475    to one of its representations &MUST; evaluate the condition as false if
    476    the entity-tag used as a validator is marked as weak or, when an HTTP-date
    477    is used as the validator, if the date value is not strong in the sense
    478    defined by &lastmod-comparison;. (A server can distinguish between a
    479    valid HTTP-date and any form of entity-tag by examining the first
    480    two characters.)
    481 </t>
    482466<t>
    483467   A client &MUST-NOT; generate an If-Range header field in a request that
     
    489473</t>
    490474<t>
     475   A client &MUST-NOT; generate an If-Range header field containing an
     476   entity-tag that is marked as weak.
     477   A client &MUST-NOT; generate an If-Range header field containing an
     478   <x:ref>HTTP-date</x:ref> unless the client has no entity-tag for
     479   the corresponding representation and the date is a strong validator
     480   in the sense defined by &lastmod-comparison;.
     481</t>
     482<t>
     483   A server that evaluates an If-Range precondition &MUST; use the strong
     484   comparison function when comparing entity-tags (&entity-tag-comparison;)
     485   and &MUST; evaluate the condition as false if an <x:ref>HTTP-date</x:ref>
     486   validator is provided that is not a strong validator in the sense defined
     487   by &lastmod-comparison;.
     488   (A server can distinguish between a valid <x:ref>HTTP-date</x:ref> and any
     489   form of entity-tag by examining the first two characters.)
     490</t>
     491<t>
    491492   If the validator given in the If-Range header field matches the current
    492493   validator for the selected representation of the target resource, then
    493    the server &SHOULD; process the Range header field as requested.
    494    If the validator does not match, then the server &MUST; ignore the
     494   the server &SHOULD; process the <x:ref>Range</x:ref> header field as
     495   requested. If the validator does not match, the server &MUST; ignore the
    495496   <x:ref>Range</x:ref> header field.
    496497</t>
     
    748749   specifications.  After several such transfers, a client might have
    749750   received several ranges of the same representation.  These ranges can only
    750    be safely combined if they all have in common the same strong validator,
    751    where "strong validator" is defined to be either an entity-tag that is
    752    not marked as weak (&entity-tags;) or, if no entity-tag is provided, a
    753    <x:ref>Last-Modified</x:ref> value that is strong in the sense defined by
    754    &lastmod-comparison;.
     751   be safely combined if they all have in common the same strong validator
     752   (&weak-and-strong-validators;).
    755753</t>
    756754<t>
Note: See TracChangeset for help on using the changeset viewer.