Changeset 1738 for draft-ietf-httpbis
- Timestamp:
- 08/07/12 13:29:53 (10 years ago)
- Location:
- draft-ietf-httpbis/latest
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p2-semantics.html
r1737 r1738 980 980 </p> 981 981 <p id="rfc.section.2.3.2.p.3">The semantics of the GET method change to a "conditional GET" if the request message includes an If-Modified-Since, If-Unmodified-Since, 982 If-Match, If-None-Match, or If-Range header field. A conditional GET requests that the representation be transferred only 983 under the circumstances described by the conditional header field(s). The conditional GET request is intended to reduce unnecessary 984 network usage by allowing cached representations to be refreshed without requiring multiple requests or transferring data 985 already held by the client. 986 </p> 987 <p id="rfc.section.2.3.2.p.4">The semantics of the GET method change to a "partial GET" if the request message includes a Range header field. A partial 988 GET requests that only part of the representation be transferred, as described in <a href="p5-range.html#header.range" title="Range">Section 5.4</a> of <a href="#Part5" id="rfc.xref.Part5.1"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>. The partial GET request is intended to reduce unnecessary network usage by allowing partially-retrieved representations 982 If-Match, If-None-Match, or <a href="p5-range.html#header.if-range" class="smpl">If-Range</a> header field (<a href="#Part4" id="rfc.xref.Part4.1"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>). A conditional GET requests that the representation be transferred only under the circumstances described by the conditional 983 header field(s). The conditional GET request is intended to reduce unnecessary network usage by allowing cached representations 984 to be refreshed without requiring multiple requests or transferring data already held by the client. 985 </p> 986 <p id="rfc.section.2.3.2.p.4">The semantics of the GET method change to a "partial GET" if the request message includes a <a href="p5-range.html#range.retrieval.requests" class="smpl">Range</a> header field (<a href="#Part5" id="rfc.xref.Part5.1"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>). A partial GET requests that only part of the representation be transferred, as described in <a href="p5-range.html#header.range" title="Range">Section 5.4</a> of <a href="#Part5" id="rfc.xref.Part5.2"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>. The partial GET request is intended to reduce unnecessary network usage by allowing partially-retrieved representations 989 987 to be completed without transferring data already held by the client. 990 988 </p> … … 1084 1082 the related resources. 1085 1083 </p> 1086 <p id="rfc.section.2.3.5.p.10">An origin server <em class="bcp14">SHOULD</em> reject any PUT request that contains a Content-Range header field, since it might be misinterpreted as partial content (or1087 might be partial content that is being mistakenly PUT as a full representation). Partial content updates are possible by targeting1088 a separately identified resource with state that overlaps a portion of the larger resource, or by using a different method1089 that has been specifically defined for partial updates (forexample, the PATCH method defined in <a href="#RFC5789" id="rfc.xref.RFC5789.1"><cite title="PATCH Method for HTTP">[RFC5789]</cite></a>).1084 <p id="rfc.section.2.3.5.p.10">An origin server <em class="bcp14">SHOULD</em> reject any PUT request that contains a <a href="p5-range.html#header.content-range" class="smpl">Content-Range</a> header field (<a href="p5-range.html#header.content-range" title="Content-Range">Section 5.2</a> of <a href="#Part5" id="rfc.xref.Part5.3"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>), since it might be misinterpreted as partial content (or might be partial content that is being mistakenly PUT as a full 1085 representation). Partial content updates are possible by targeting a separately identified resource with state that overlaps 1086 a portion of the larger resource, or by using a different method that has been specifically defined for partial updates (for 1087 example, the PATCH method defined in <a href="#RFC5789" id="rfc.xref.RFC5789.1"><cite title="PATCH Method for HTTP">[RFC5789]</cite></a>). 1090 1088 </p> 1091 1089 <p id="rfc.section.2.3.5.p.11">Responses to the PUT method are not cacheable. If a PUT request passes through a cache that has one or more stored responses … … 1275 1273 <tr> 1276 1274 <td class="left">If-Match</td> 1277 <td class="left"><a href="p4-conditional.html#header.if-match" title="If-Match">Section 3.1</a> of <a href="#Part4" id="rfc.xref.Part4. 1"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>1275 <td class="left"><a href="p4-conditional.html#header.if-match" title="If-Match">Section 3.1</a> of <a href="#Part4" id="rfc.xref.Part4.2"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 1278 1276 </tr> 1279 1277 <tr> 1280 1278 <td class="left">If-Modified-Since</td> 1281 <td class="left"><a href="p4-conditional.html#header.if-modified-since" title="If-Modified-Since">Section 3.3</a> of <a href="#Part4" id="rfc.xref.Part4. 2"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>1279 <td class="left"><a href="p4-conditional.html#header.if-modified-since" title="If-Modified-Since">Section 3.3</a> of <a href="#Part4" id="rfc.xref.Part4.3"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 1282 1280 </tr> 1283 1281 <tr> 1284 1282 <td class="left">If-None-Match</td> 1285 <td class="left"><a href="p4-conditional.html#header.if-none-match" title="If-None-Match">Section 3.2</a> of <a href="#Part4" id="rfc.xref.Part4. 3"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>1283 <td class="left"><a href="p4-conditional.html#header.if-none-match" title="If-None-Match">Section 3.2</a> of <a href="#Part4" id="rfc.xref.Part4.4"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 1286 1284 </tr> 1287 1285 <tr> 1288 1286 <td class="left">If-Range</td> 1289 <td class="left"><a href="p5-range.html#header.if-range" title="If-Range">Section 5.3</a> of <a href="#Part5" id="rfc.xref.Part5. 2"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td>1287 <td class="left"><a href="p5-range.html#header.if-range" title="If-Range">Section 5.3</a> of <a href="#Part5" id="rfc.xref.Part5.4"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td> 1290 1288 </tr> 1291 1289 <tr> 1292 1290 <td class="left">If-Unmodified-Since</td> 1293 <td class="left"><a href="p4-conditional.html#header.if-unmodified-since" title="If-Unmodified-Since">Section 3.4</a> of <a href="#Part4" id="rfc.xref.Part4. 4"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>1291 <td class="left"><a href="p4-conditional.html#header.if-unmodified-since" title="If-Unmodified-Since">Section 3.4</a> of <a href="#Part4" id="rfc.xref.Part4.5"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 1294 1292 </tr> 1295 1293 <tr> … … 1303 1301 <tr> 1304 1302 <td class="left">Range</td> 1305 <td class="left"><a href="p5-range.html#header.range" title="Range">Section 5.4</a> of <a href="#Part5" id="rfc.xref.Part5. 3"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td>1303 <td class="left"><a href="p5-range.html#header.range" title="Range">Section 5.4</a> of <a href="#Part5" id="rfc.xref.Part5.5"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td> 1306 1304 </tr> 1307 1305 <tr> … … 1335 1333 <tr> 1336 1334 <td class="left">Accept-Ranges</td> 1337 <td class="left"><a href="p5-range.html#header.accept-ranges" title="Accept-Ranges">Section 5.1</a> of <a href="#Part5" id="rfc.xref.Part5. 4"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td>1335 <td class="left"><a href="p5-range.html#header.accept-ranges" title="Accept-Ranges">Section 5.1</a> of <a href="#Part5" id="rfc.xref.Part5.6"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td> 1338 1336 </tr> 1339 1337 <tr> … … 1351 1349 <tr> 1352 1350 <td class="left">ETag</td> 1353 <td class="left"><a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4. 5"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>1351 <td class="left"><a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4.6"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 1354 1352 </tr> 1355 1353 <tr> … … 1407 1405 </p> 1408 1406 <h2 id="rfc.section.4.1"><a href="#rfc.section.4.1">4.1</a> <a id="overview.of.status.codes" href="#overview.of.status.codes">Overview of Status Codes</a></h2> 1409 <p id="rfc.section.4.1.p.1">The status codes listed below are defined in this specification, <a href="p4-conditional.html#status.code.definitions" title="Status Code Definitions">Section 4</a> of <a href="#Part4" id="rfc.xref.Part4. 6"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>, <a href="p5-range.html#status.code.definitions" title="Status Code Definitions">Section 3</a> of <a href="#Part5" id="rfc.xref.Part5.5"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>, and <a href="p7-auth.html#status.code.definitions" title="Status Code Definitions">Section 3</a> of <a href="#Part7" id="rfc.xref.Part7.5"><cite title="HTTP/1.1, part 7: Authentication">[Part7]</cite></a>. The reason phrases listed here are only recommendations — they can be replaced by local equivalents without affecting the1407 <p id="rfc.section.4.1.p.1">The status codes listed below are defined in this specification, <a href="p4-conditional.html#status.code.definitions" title="Status Code Definitions">Section 4</a> of <a href="#Part4" id="rfc.xref.Part4.7"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>, <a href="p5-range.html#status.code.definitions" title="Status Code Definitions">Section 3</a> of <a href="#Part5" id="rfc.xref.Part5.7"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>, and <a href="p7-auth.html#status.code.definitions" title="Status Code Definitions">Section 3</a> of <a href="#Part7" id="rfc.xref.Part7.5"><cite title="HTTP/1.1, part 7: Authentication">[Part7]</cite></a>. The reason phrases listed here are only recommendations — they can be replaced by local equivalents without affecting the 1410 1408 protocol. 1411 1409 </p> … … 1463 1461 <td class="left">206</td> 1464 1462 <td class="left">Partial Content</td> 1465 <td id="status.206" class="left"><a href="p5-range.html#status.206" title="206 Partial Content">Section 3.1</a> of <a href="#Part5" id="rfc.xref.Part5. 6"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td>1463 <td id="status.206" class="left"><a href="p5-range.html#status.206" title="206 Partial Content">Section 3.1</a> of <a href="#Part5" id="rfc.xref.Part5.8"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td> 1466 1464 </tr> 1467 1465 <tr> … … 1488 1486 <td class="left">304</td> 1489 1487 <td class="left">Not Modified</td> 1490 <td id="status.304" class="left"><a href="p4-conditional.html#status.304" title="304 Not Modified">Section 4.1</a> of <a href="#Part4" id="rfc.xref.Part4. 7"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>1488 <td id="status.304" class="left"><a href="p4-conditional.html#status.304" title="304 Not Modified">Section 4.1</a> of <a href="#Part4" id="rfc.xref.Part4.8"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 1491 1489 </tr> 1492 1490 <tr> … … 1563 1561 <td class="left">412</td> 1564 1562 <td class="left">Precondition Failed</td> 1565 <td id="status.412" class="left"><a href="p4-conditional.html#status.412" title="412 Precondition Failed">Section 4.2</a> of <a href="#Part4" id="rfc.xref.Part4. 8"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>1563 <td id="status.412" class="left"><a href="p4-conditional.html#status.412" title="412 Precondition Failed">Section 4.2</a> of <a href="#Part4" id="rfc.xref.Part4.9"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 1566 1564 </tr> 1567 1565 <tr> … … 1583 1581 <td class="left">416</td> 1584 1582 <td class="left">Requested range not satisfiable</td> 1585 <td id="status.416" class="left"><a href="p5-range.html#status.416" title="416 Requested Range Not Satisfiable">Section 3.2</a> of <a href="#Part5" id="rfc.xref.Part5. 7"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td>1583 <td id="status.416" class="left"><a href="p5-range.html#status.416" title="416 Requested Range Not Satisfiable">Section 3.2</a> of <a href="#Part5" id="rfc.xref.Part5.9"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td> 1586 1584 </tr> 1587 1585 <tr> … … 1714 1712 </p> 1715 1713 <p id="rfc.section.4.4.2.p.4">A 201 response <em class="bcp14">MAY</em> contain an ETag response header field indicating the current value of the entity-tag for the representation of the resource 1716 identified by the Location header field or, in case the Location header field was omitted, by the Effective Request URI (see <a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4. 9"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>).1714 identified by the Location header field or, in case the Location header field was omitted, by the Effective Request URI (see <a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4.10"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>). 1717 1715 </p> 1718 1716 <div id="rfc.iref.27"></div> … … 1794 1792 <li> 1795 1793 <p>Other kinds of redirection, such as to a cached result (status code <a href="p4-conditional.html#status.304" class="smpl">304 1796 (Not Modified)</a>, see <a href="p4-conditional.html#status.304" title="304 Not Modified">Section 4.1</a> of <a href="#Part4" id="rfc.xref.Part4.1 0"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>).1794 (Not Modified)</a>, see <a href="p4-conditional.html#status.304" title="304 Not Modified">Section 4.1</a> of <a href="#Part4" id="rfc.xref.Part4.11"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>). 1797 1795 </p> 1798 1796 </li> … … 2351 2349 <tr> 2352 2350 <td class="left">Content-Range</td> 2353 <td class="left"><a href="p5-range.html#header.content-range" title="Content-Range">Section 5.2</a> of <a href="#Part5" id="rfc.xref.Part5. 8"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td>2351 <td class="left"><a href="p5-range.html#header.content-range" title="Content-Range">Section 5.2</a> of <a href="#Part5" id="rfc.xref.Part5.10"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a></td> 2354 2352 </tr> 2355 2353 </tbody> … … 2457 2455 <tr> 2458 2456 <td class="left">ETag</td> 2459 <td class="left"><a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4.1 1"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>2457 <td class="left"><a href="p4-conditional.html#header.etag" title="ETag">Section 2.3</a> of <a href="#Part4" id="rfc.xref.Part4.12"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 2460 2458 </tr> 2461 2459 <tr> 2462 2460 <td class="left">Last-Modified</td> 2463 <td class="left"><a href="p4-conditional.html#header.last-modified" title="Last-Modified">Section 2.2</a> of <a href="#Part4" id="rfc.xref.Part4.1 2"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td>2461 <td class="left"><a href="p4-conditional.html#header.last-modified" title="Last-Modified">Section 2.2</a> of <a href="#Part4" id="rfc.xref.Part4.13"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a></td> 2464 2462 </tr> 2465 2463 </tbody> … … 3959 3957 <p id="rfc.section.C.p.1">Clarify definition of POST. (<a href="#POST" id="rfc.xref.POST.2" title="POST">Section 2.3.4</a>) 3960 3958 </p> 3961 <p id="rfc.section.C.p.2">Remove requirement to handle all Content-* header fields; ban use of Content-Rangewith PUT. (<a href="#PUT" id="rfc.xref.PUT.2" title="PUT">Section 2.3.5</a>)3959 <p id="rfc.section.C.p.2">Remove requirement to handle all Content-* header fields; ban use of <a href="p5-range.html#header.content-range" class="smpl">Content-Range</a> with PUT. (<a href="#PUT" id="rfc.xref.PUT.2" title="PUT">Section 2.3.5</a>) 3962 3960 </p> 3963 3961 <p id="rfc.section.C.p.3">Take over definition of CONNECT method from <a href="#RFC2817" id="rfc.xref.RFC2817.2"><cite title="Upgrading to TLS Within HTTP/1.1">[RFC2817]</cite></a>. (<a href="#CONNECT" id="rfc.xref.CONNECT.2" title="CONNECT">Section 2.3.8</a>) … … 4204 4202 <p id="rfc.section.E.2.p.2">Other changes: </p> 4205 4203 <ul> 4206 <li>Move definitions of 304 and 412 condition codes to <a href="#Part4" id="rfc.xref.Part4.1 3"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a>4204 <li>Move definitions of 304 and 412 condition codes to <a href="#Part4" id="rfc.xref.Part4.14"><cite title="HTTP/1.1, part 4: Conditional Requests">[Part4]</cite></a> 4207 4205 </li> 4208 4206 </ul> … … 5002 5000 </ul> 5003 5001 </li> 5004 <li><em>Part4</em> <a href="#rfc.xref.Part4.1"> 3.2</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">3.3</a>, <a href="#rfc.xref.Part4.6">4.1</a>, <a href="#rfc.xref.Part4.7">4.1</a>, <a href="#rfc.xref.Part4.8">4.1</a>, <a href="#rfc.xref.Part4.9">4.4.2</a>, <a href="#rfc.xref.Part4.10">4.5</a>, <a href="#rfc.xref.Part4.11">7.2</a>, <a href="#rfc.xref.Part4.12">7.2</a>, <a href="#Part4"><b>13.1</b></a>, <a href="#rfc.xref.Part4.13">E.2</a><ul>5005 <li><em>Section 2.2</em> <a href="#rfc.xref.Part4.1 2">7.2</a></li>5006 <li><em>Section 2.3</em> <a href="#rfc.xref.Part4. 5">3.3</a>, <a href="#rfc.xref.Part4.9">4.4.2</a>, <a href="#rfc.xref.Part4.11">7.2</a></li>5007 <li><em>Section 3.1</em> <a href="#rfc.xref.Part4. 1">3.2</a></li>5008 <li><em>Section 3.2</em> <a href="#rfc.xref.Part4. 3">3.2</a></li>5009 <li><em>Section 3.3</em> <a href="#rfc.xref.Part4. 2">3.2</a></li>5010 <li><em>Section 3.4</em> <a href="#rfc.xref.Part4. 4">3.2</a></li>5011 <li><em>Section 4</em> <a href="#rfc.xref.Part4. 6">4.1</a></li>5012 <li><em>Section 4.1</em> <a href="#rfc.xref.Part4. 7">4.1</a>, <a href="#rfc.xref.Part4.10">4.5</a></li>5013 <li><em>Section 4.2</em> <a href="#rfc.xref.Part4. 8">4.1</a></li>5002 <li><em>Part4</em> <a href="#rfc.xref.Part4.1">2.3.2</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">3.2</a>, <a href="#rfc.xref.Part4.6">3.3</a>, <a href="#rfc.xref.Part4.7">4.1</a>, <a href="#rfc.xref.Part4.8">4.1</a>, <a href="#rfc.xref.Part4.9">4.1</a>, <a href="#rfc.xref.Part4.10">4.4.2</a>, <a href="#rfc.xref.Part4.11">4.5</a>, <a href="#rfc.xref.Part4.12">7.2</a>, <a href="#rfc.xref.Part4.13">7.2</a>, <a href="#Part4"><b>13.1</b></a>, <a href="#rfc.xref.Part4.14">E.2</a><ul> 5003 <li><em>Section 2.2</em> <a href="#rfc.xref.Part4.13">7.2</a></li> 5004 <li><em>Section 2.3</em> <a href="#rfc.xref.Part4.6">3.3</a>, <a href="#rfc.xref.Part4.10">4.4.2</a>, <a href="#rfc.xref.Part4.12">7.2</a></li> 5005 <li><em>Section 3.1</em> <a href="#rfc.xref.Part4.2">3.2</a></li> 5006 <li><em>Section 3.2</em> <a href="#rfc.xref.Part4.4">3.2</a></li> 5007 <li><em>Section 3.3</em> <a href="#rfc.xref.Part4.3">3.2</a></li> 5008 <li><em>Section 3.4</em> <a href="#rfc.xref.Part4.5">3.2</a></li> 5009 <li><em>Section 4</em> <a href="#rfc.xref.Part4.7">4.1</a></li> 5010 <li><em>Section 4.1</em> <a href="#rfc.xref.Part4.8">4.1</a>, <a href="#rfc.xref.Part4.11">4.5</a></li> 5011 <li><em>Section 4.2</em> <a href="#rfc.xref.Part4.9">4.1</a></li> 5014 5012 </ul> 5015 5013 </li> 5016 <li><em>Part5</em> <a href="#rfc.xref.Part5.1">2.3.2</a>, <a href="#rfc.xref.Part5.2"> 3.2</a>, <a href="#rfc.xref.Part5.3">3.2</a>, <a href="#rfc.xref.Part5.4">3.3</a>, <a href="#rfc.xref.Part5.5">4.1</a>, <a href="#rfc.xref.Part5.6">4.1</a>, <a href="#rfc.xref.Part5.7">4.1</a>, <a href="#rfc.xref.Part5.8">6.1</a>, <a href="#Part5"><b>13.1</b></a><ul>5017 <li><em>Section 3</em> <a href="#rfc.xref.Part5. 5">4.1</a></li>5018 <li><em>Section 3.1</em> <a href="#rfc.xref.Part5. 6">4.1</a></li>5019 <li><em>Section 3.2</em> <a href="#rfc.xref.Part5. 7">4.1</a></li>5020 <li><em>Section 5.1</em> <a href="#rfc.xref.Part5. 4">3.3</a></li>5021 <li><em>Section 5.2</em> <a href="#rfc.xref.Part5. 8">6.1</a></li>5022 <li><em>Section 5.3</em> <a href="#rfc.xref.Part5. 2">3.2</a></li>5023 <li><em>Section 5.4</em> <a href="#rfc.xref.Part5. 1">2.3.2</a>, <a href="#rfc.xref.Part5.3">3.2</a></li>5014 <li><em>Part5</em> <a href="#rfc.xref.Part5.1">2.3.2</a>, <a href="#rfc.xref.Part5.2">2.3.2</a>, <a href="#rfc.xref.Part5.3">2.3.5</a>, <a href="#rfc.xref.Part5.4">3.2</a>, <a href="#rfc.xref.Part5.5">3.2</a>, <a href="#rfc.xref.Part5.6">3.3</a>, <a href="#rfc.xref.Part5.7">4.1</a>, <a href="#rfc.xref.Part5.8">4.1</a>, <a href="#rfc.xref.Part5.9">4.1</a>, <a href="#rfc.xref.Part5.10">6.1</a>, <a href="#Part5"><b>13.1</b></a><ul> 5015 <li><em>Section 3</em> <a href="#rfc.xref.Part5.7">4.1</a></li> 5016 <li><em>Section 3.1</em> <a href="#rfc.xref.Part5.8">4.1</a></li> 5017 <li><em>Section 3.2</em> <a href="#rfc.xref.Part5.9">4.1</a></li> 5018 <li><em>Section 5.1</em> <a href="#rfc.xref.Part5.6">3.3</a></li> 5019 <li><em>Section 5.2</em> <a href="#rfc.xref.Part5.3">2.3.5</a>, <a href="#rfc.xref.Part5.10">6.1</a></li> 5020 <li><em>Section 5.3</em> <a href="#rfc.xref.Part5.4">3.2</a></li> 5021 <li><em>Section 5.4</em> <a href="#rfc.xref.Part5.2">2.3.2</a>, <a href="#rfc.xref.Part5.5">3.2</a></li> 5024 5022 </ul> 5025 5023 </li> -
draft-ietf-httpbis/latest/p2-semantics.xml
r1737 r1738 581 581 The semantics of the GET method change to a "conditional GET" if the 582 582 request message includes an If-Modified-Since, If-Unmodified-Since, 583 If-Match, If-None-Match, or If-Range header field. A conditional GET 584 requests that the representation be transferred only under the 585 circumstances described by the conditional header field(s). The 586 conditional GET request is intended to reduce unnecessary network 587 usage by allowing cached representations to be refreshed without requiring 588 multiple requests or transferring data already held by the client. 589 </t> 590 <t> 591 The semantics of the GET method change to a "partial GET" if the 592 request message includes a Range header field. A partial GET requests 593 that only part of the representation be transferred, as described in &header-range;. 594 The partial GET request is intended to reduce unnecessary 595 network usage by allowing partially-retrieved representations to be 596 completed without transferring data already held by the client. 583 If-Match, If-None-Match, or <x:ref>If-Range</x:ref> header field 584 (<xref target="Part4"/>). A conditional GET requests that the representation 585 be transferred only under the circumstances described by the conditional 586 header field(s). The conditional GET request is intended to reduce 587 unnecessary network usage by allowing cached representations to be refreshed 588 without requiring multiple requests or transferring data already held by the 589 client. 590 </t> 591 <t> 592 The semantics of the GET method change to a "partial GET" if the request 593 message includes a <x:ref>Range</x:ref> header field (<xref target="Part5"/>). 594 A partial GET requests that only part of the representation be transferred, 595 as described in &header-range;. The partial GET request is intended to reduce 596 unnecessary network usage by allowing partially-retrieved representations to 597 be completed without transferring data already held by the client. 597 598 </t> 598 599 <t> … … 803 804 <t> 804 805 An origin server &SHOULD; reject any PUT request that contains a 805 Content-Range header field, since it might be misinterpreted as806 partial content (or might be partial content that is being mistakenly807 PUT as a full representation). Partial content updates are808 possible by targeting a separately identified resource with state809 that overlaps a portion of the larger resource, or by using a806 <x:ref>Content-Range</x:ref> header field (&header-content-range;), since 807 it might be misinterpreted as partial content (or might be partial content 808 that is being mistakenly PUT as a full representation). Partial content 809 updates are possible by targeting a separately identified resource with 810 state that overlaps a portion of the larger resource, or by using a 810 811 different method that has been specifically defined for partial 811 812 updates (for example, the PATCH method defined in … … 4672 4673 <x:defines>206</x:defines> 4673 4674 <x:defines>206 (Partial Content)</x:defines> 4675 <x:defines>Content-Range</x:defines> 4676 <x:defines>If-Range</x:defines> 4677 <x:defines>Range</x:defines> 4674 4678 </x:source> 4675 4679 </reference> … … 5458 5462 <t> 5459 5463 Remove requirement to handle all Content-* header fields; ban use of 5460 Content-Rangewith PUT.5464 <x:ref>Content-Range</x:ref> with PUT. 5461 5465 (<xref target="PUT"/>) 5462 5466 </t> -
draft-ietf-httpbis/latest/p4-conditional.html
r1737 r1738 770 770 <ul> 771 771 <li>The validator is about to be used by a client in an If-Modified-Since, If-Unmodified-Since header field, because the client 772 has a cache entry, or If-Rangefor the associated representation, and772 has a cache entry, or <a href="p5-range.html#header.if-range" class="smpl">If-Range</a> for the associated representation, and 773 773 </li> 774 774 <li>That cache entry includes a Date value, which gives the time when the origin server sent the original response, and</li> … … 954 954 </ul> 955 955 <p id="rfc.section.2.4.p.5">An HTTP/1.1 origin server, upon receiving a conditional request that includes both a Last-Modified date (e.g., in an If-Modified-Since 956 or If-Unmodified-Since header field) and one or more entity-tags (e.g., in an If-Match, If-None-Match, or If-Range header 957 field) as cache validators, <em class="bcp14">MUST NOT</em> return a response status code of <a href="#status.304" class="smpl">304 (Not Modified)</a> unless doing so is consistent with all of the conditional header fields in the request. 956 or If-Unmodified-Since header field) and one or more entity-tags (e.g., in an If-Match, If-None-Match, or <a href="p5-range.html#header.if-range" class="smpl">If-Range</a> header field) as cache validators, <em class="bcp14">MUST NOT</em> return a response status code of <a href="#status.304" class="smpl">304 (Not Modified)</a> unless doing so is consistent with all of the conditional header fields in the request. 958 957 </p> 959 958 <p id="rfc.section.2.4.p.6">An HTTP/1.1 caching proxy, upon receiving a conditional request that includes both a Last-Modified date and one or more entity-tags … … 1042 1041 </pre><p id="rfc.section.3.3.p.3">An example of the field is:</p> 1043 1042 <div id="rfc.figure.u.14"></div><pre class="text"> If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT 1044 </pre><p id="rfc.section.3.3.p.5">A GET method with an If-Modified-Since header field and no Range header field requests that the selected representation be 1045 transferred only if it has been modified since the date given by the If-Modified-Since header field. The algorithm for determining 1046 this includes the following cases: 1043 </pre><p id="rfc.section.3.3.p.5">A GET method with an If-Modified-Since header field and no <a href="p5-range.html#range.retrieval.requests" class="smpl">Range</a> header field requests that the selected representation be transferred only if it has been modified since the date given by 1044 the If-Modified-Since header field. The algorithm for determining this includes the following cases: 1047 1045 </p> 1048 1046 <ol> … … 1058 1056 <p id="rfc.section.3.3.p.6">The purpose of this feature is to allow efficient updates of cached information with a minimum amount of transaction overhead. </p> 1059 1057 <ul class="empty"> 1060 <li> <b>Note:</b> The Rangeheader field modifies the meaning of If-Modified-Since; see <a href="p5-range.html#header.range" title="Range">Section 5.4</a> of <a href="#Part5" id="rfc.xref.Part5.1"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a> for full details.1058 <li> <b>Note:</b> The <a href="p5-range.html#range.retrieval.requests" class="smpl">Range</a> header field modifies the meaning of If-Modified-Since; see <a href="p5-range.html#header.range" title="Range">Section 5.4</a> of <a href="#Part5" id="rfc.xref.Part5.1"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a> for full details. 1061 1059 </li> 1062 1060 <li> <b>Note:</b> If-Modified-Since times are interpreted by the server, whose clock might not be synchronized with the client. … … 1095 1093 </p> 1096 1094 <h2 id="rfc.section.3.5"><a href="#rfc.section.3.5">3.5</a> <a id="header.if-range" href="#header.if-range">If-Range</a></h2> 1097 <p id="rfc.section.3.5.p.1">The If-Rangeheader field provides a special conditional request mechanism that is similar to If-Match and If-Unmodified-Since1095 <p id="rfc.section.3.5.p.1">The "If-Range" header field provides a special conditional request mechanism that is similar to If-Match and If-Unmodified-Since 1098 1096 but specific to HTTP range requests. If-Range is defined in <a href="p5-range.html#header.if-range" title="If-Range">Section 5.3</a> of <a href="#Part5" id="rfc.xref.Part5.2"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>. 1099 1097 </p> -
draft-ietf-httpbis/latest/p4-conditional.xml
r1737 r1738 424 424 <t>The validator is about to be used by a client in an If-Modified-Since, 425 425 If-Unmodified-Since header field, because the client has a cache entry, 426 or If-Rangefor the associated representation, and</t>426 or <x:ref>If-Range</x:ref> for the associated representation, and</t> 427 427 <t>That cache entry includes a Date value, which gives the time 428 428 when the origin server sent the original response, and</t> … … 696 696 includes both a Last-Modified date (e.g., in an If-Modified-Since or 697 697 If-Unmodified-Since header field) and one or more entity-tags (e.g., 698 in an If-Match, If-None-Match, or If-Range header field) as cache699 validators, &MUST-NOT; return a response status code of <x:ref>304 (Not Modified)</x:ref>700 unless doing so is consistent with all of the conditional header701 fields in the request.698 in an If-Match, If-None-Match, or <x:ref>If-Range</x:ref> header field) as 699 cache validators, &MUST-NOT; return a response status code of 700 <x:ref>304 (Not Modified)</x:ref> unless doing so is consistent with all of 701 the conditional header fields in the request. 702 702 </t> 703 703 <t> … … 879 879 </artwork></figure> 880 880 <t> 881 A GET method with an If-Modified-Since header field and no Range header882 field requests that the selected representation be transferred only if881 A GET method with an If-Modified-Since header field and no <x:ref>Range</x:ref> 882 header field requests that the selected representation be transferred only if 883 883 it has been modified since the date given by the If-Modified-Since 884 884 header field. … … 904 904 information with a minimum amount of transaction overhead. 905 905 <list><t> 906 &Note; The Range header field modifies the meaning of If-Modified-Since;907 see &header-range; for full details.906 &Note; The <x:ref>Range</x:ref> header field modifies the meaning of 907 If-Modified-Since; see &header-range; for full details. 908 908 </t><t> 909 909 &Note; If-Modified-Since times are interpreted by the server, whose … … 983 983 <section title="If-Range" anchor="header.if-range"> 984 984 <t> 985 The If-Rangeheader field provides a special conditional request985 The "If-Range" header field provides a special conditional request 986 986 mechanism that is similar to If-Match and If-Unmodified-Since but 987 987 specific to HTTP range requests. If-Range is defined in &header-if-range;. … … 1224 1224 </front> 1225 1225 <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-p5-range-&ID-VERSION;"/> 1226 <x:source href="p5-range.xml" basename="p5-range"/> 1226 <x:source href="p5-range.xml" basename="p5-range"> 1227 <x:defines>If-Range</x:defines> 1228 <x:defines>Range</x:defines> 1229 </x:source> 1227 1230 </reference> 1228 1231 -
draft-ietf-httpbis/latest/p5-range.html
r1737 r1738 706 706 </pre><h1 id="rfc.section.2"><a href="#rfc.section.2">2.</a> <a id="range.units" href="#range.units">Range Units</a></h1> 707 707 <p id="rfc.section.2.p.1">HTTP/1.1 allows a client to request that only part (a range) of the representation be included within the response. HTTP/1.1 708 uses range units in the Range (<a href="#header.range" id="rfc.xref.header.range.1" title="Range">Section 5.4</a>) and Content-Range(<a href="#header.content-range" id="rfc.xref.header.content-range.1" title="Content-Range">Section 5.2</a>) header fields. A representation can be broken down into subranges according to various structural units.708 uses range units in the <a href="#range.retrieval.requests" class="smpl">Range</a> (<a href="#header.range" id="rfc.xref.header.range.1" title="Range">Section 5.4</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. A representation can be broken down into subranges according to various structural units. 709 709 </p> 710 710 <div id="rfc.figure.u.3"></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> … … 714 714 unit defined by HTTP/1.1 is "bytes". Additional specifiers can be defined as described in <a href="#range.specifier.registry" title="Range Specifier Registry">Section 2.1</a>. 715 715 </p> 716 <p id="rfc.section.2.p.4">If a range unit is not understood in a request, a server <em class="bcp14">MUST</em> ignore the whole Rangeheader field (<a href="#header.range" id="rfc.xref.header.range.2" title="Range">Section 5.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.716 <p id="rfc.section.2.p.4">If a range unit is not understood in a request, a server <em class="bcp14">MUST</em> ignore the whole <a href="#range.retrieval.requests" class="smpl">Range</a> header field (<a href="#header.range" id="rfc.xref.header.range.2" title="Range">Section 5.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. 717 717 </p> 718 718 <h2 id="rfc.section.2.1"><a href="#rfc.section.2.1">2.1</a> <a id="range.specifier.registry" href="#range.specifier.registry">Range Specifier Registry</a></h2> … … 733 733 <div id="rfc.iref.s.1"></div> 734 734 <h2 id="rfc.section.3.1"><a href="#rfc.section.3.1">3.1</a> <a id="status.206" href="#status.206">206 Partial Content</a></h2> 735 <p id="rfc.section.3.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 5.4</a>) indicating the desired range, and <em class="bcp14">MAY</em> have included an If-Rangeheader field (<a href="#header.if-range" id="rfc.xref.header.if-range.1" title="If-Range">Section 5.3</a>) to make the request conditional.735 <p id="rfc.section.3.1.p.1">The server has fulfilled the partial GET request for the resource. The request <em class="bcp14">MUST</em> have included a <a href="#range.retrieval.requests" class="smpl">Range</a> header field (<a href="#header.range" id="rfc.xref.header.range.3" title="Range">Section 5.4</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.1" title="If-Range">Section 5.3</a>) to make the request conditional. 736 736 </p> 737 737 <p id="rfc.section.3.1.p.2">The response <em class="bcp14">MUST</em> include the following header fields: 738 738 </p> 739 739 <ul> 740 <li>Either a Content-Rangeheader 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 Content-Type including Content-Range fields740 <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 Content-Type including Content-Range fields 741 741 for each part. If a Content-Length 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. 742 742 </li> … … 745 745 </li> 746 746 </ul> 747 <p id="rfc.section.3.1.p.3">If a 206 is sent in response to a request with an If-Rangeheader field, it <em class="bcp14">SHOULD NOT</em> include other representation header fields. Otherwise, the response <em class="bcp14">MUST</em> include all of the representation header fields that would have been returned with a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response to the same request.747 <p id="rfc.section.3.1.p.3">If a 206 is sent in response to a request with an <a href="#header.if-range" class="smpl">If-Range</a> header field, it <em class="bcp14">SHOULD NOT</em> include other representation header fields. Otherwise, the response <em class="bcp14">MUST</em> include all of the representation header fields that would have been returned with a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response to the same request. 748 748 </p> 749 749 <p id="rfc.section.3.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 2.3.1.1</a> of <a href="#Part6" id="rfc.xref.Part6.1"><cite title="HTTP/1.1, part 6: Caching">[Part6]</cite></a>) to determine freshness for 206 responses. … … 752 752 <div id="rfc.iref.s.2"></div> 753 753 <h2 id="rfc.section.3.2"><a href="#rfc.section.3.2">3.2</a> <a id="status.416" href="#status.416">416 Requested Range Not Satisfiable</a></h2> 754 <p id="rfc.section.3.2.p.1">A server <em class="bcp14">SHOULD</em> return a response with this status code if a request included a Rangeheader field (<a href="#header.range" id="rfc.xref.header.range.4" title="Range">Section 5.4</a>), and none of the ranges-specifier values in this field overlap the current extent of the selected resource, and the request755 did not include an If-Rangeheader field (<a href="#header.if-range" id="rfc.xref.header.if-range.2" title="If-Range">Section 5.3</a>). (For byte-ranges, this means that the first-byte-pos of all of the byte-range-spec values were greater than the current754 <p id="rfc.section.3.2.p.1">A server <em class="bcp14">SHOULD</em> return a response with this status code if a request included a <a href="#range.retrieval.requests" class="smpl">Range</a> header field (<a href="#header.range" id="rfc.xref.header.range.4" title="Range">Section 5.4</a>), and none of the ranges-specifier values in this field overlap the current extent of the selected resource, and the request 755 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.2" title="If-Range">Section 5.3</a>). (For byte-ranges, this means that the first-byte-pos of all of the byte-range-spec values were greater than the current 756 756 length of the selected resource.) 757 757 </p> 758 <p id="rfc.section.3.2.p.2">When this status code is returned for a byte-range request, the response <em class="bcp14">SHOULD</em> include a Content-Rangeheader field specifying the current length of the representation (see <a href="#header.content-range" id="rfc.xref.header.content-range.3" title="Content-Range">Section 5.2</a>). This response <em class="bcp14">MUST NOT</em> use the multipart/byteranges content-type. For example,758 <p id="rfc.section.3.2.p.2">When this status code is returned for a byte-range request, the response <em class="bcp14">SHOULD</em> include a <a href="#header.content-range" class="smpl">Content-Range</a> header field specifying the current length of the representation (see <a href="#header.content-range" id="rfc.xref.header.content-range.3" title="Content-Range">Section 5.2</a>). This response <em class="bcp14">MUST NOT</em> use the multipart/byteranges content-type. For example, 759 759 </p> 760 760 <div id="rfc.figure.u.4"></div><pre class="text">HTTP/1.1 416 Requested Range Not Satisfiable … … 764 764 </pre><div class="note" id="rfc.section.3.2.p.4"> 765 765 <p> <b>Note:</b> Clients cannot depend on servers to send a <a href="#status.416" class="smpl">416 (Requested 766 Range Not Satisfiable)</a> response instead of a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response for an unsatisfiable Rangeheader field, since not all servers implement this header field.766 Range Not Satisfiable)</a> response instead of a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response for an unsatisfiable <a href="#range.retrieval.requests" class="smpl">Range</a> header field, since not all servers implement this header field. 767 767 </p> 768 768 </div> … … 772 772 </h2> 773 773 <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 774 a request for a set of ranges that overlap without any holes), this content is transmitted with a Content-Range header field, 775 and a Content-Length header field showing the number of bytes actually transferred. For example, 774 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 Content-Length header field showing the number of bytes actually transferred. For example, 776 775 </p> 777 776 <div id="rfc.figure.u.5"></div><pre class="text">HTTP/1.1 206 Partial Content … … 806 805 <p id="rfc.section.4.2.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 807 806 stored responses are 206 responses, then the stored response with the most header fields is used as the source of header fields 808 for the combined response, except that the client <em class="bcp14">MUST</em> use other header fields provided in the new response, aside from Content-Range, to replace all instances of the corresponding 809 header fields in the stored response. 807 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. 810 808 </p> 811 809 <p id="rfc.section.4.2.p.5">The combined response message body consists of the union of partial content ranges in the new response and each of the selected 812 responses. If the union consists of the entire range of the representation, then the combined response <em class="bcp14">MUST</em> be recorded as a complete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response with a Content-Length header field that reflects the complete length. Otherwise, the combined response(s) <em class="bcp14">MUST</em> include a Content-Range header field describing the included range(s) and be recorded as incomplete. If the union consists813 of a discontinuous range ofthe representation, then the client <em class="bcp14">MAY</em> store it as either a multipart range response or as multiple <a href="#status.206" class="smpl">206</a> responses with one continuous range each.810 responses. If the union consists of the entire range of the representation, then the combined response <em class="bcp14">MUST</em> be recorded as a complete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response with a Content-Length header field that reflects the complete length. Otherwise, the combined response(s) <em class="bcp14">MUST</em> include a <a href="#header.content-range" class="smpl">Content-Range</a> header field describing the included range(s) and be recorded as incomplete. If the union consists of a discontinuous range 811 of the representation, then the client <em class="bcp14">MAY</em> store it as either a multipart range response or as multiple <a href="#status.206" class="smpl">206</a> responses with one continuous range each. 814 812 </p> 815 813 <h1 id="rfc.section.5"><a href="#rfc.section.5">5.</a> <a id="header.field.definitions" href="#header.field.definitions">Header Field Definitions</a></h1> … … 884 882 </ul> 885 883 <p id="rfc.section.5.2.p.10">If the server ignores a byte-range-spec (for example if it is syntactically invalid, or if it might be seen as a denial-of-service 886 attack), the server <em class="bcp14">SHOULD</em> treat the request as if the invalid Rangeheader field did not exist. (Normally, this means return a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response containing the full representation).884 attack), the server <em class="bcp14">SHOULD</em> treat the request as if the invalid <a href="#range.retrieval.requests" class="smpl">Range</a> header field did not exist. (Normally, this means return a <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> response containing the full representation). 887 885 </p> 888 886 <div id="rfc.iref.i.1"></div> … … 890 888 <h2 id="rfc.section.5.3"><a href="#rfc.section.5.3">5.3</a> <a id="header.if-range" href="#header.if-range">If-Range</a></h2> 891 889 <p id="rfc.section.5.3.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 892 could use the Range header field with a conditional GET (using either or both of If-Unmodified-Since and If-Match.) However,893 if the condition fails because the representation has been modified, the client would then have to make a second request to894 obtain the entirecurrent representation.890 could use the <a href="#range.retrieval.requests" class="smpl">Range</a> header field with a conditional GET (using either or both of If-Unmodified-Since and If-Match.) However, if the condition 891 fails because the representation has been modified, the client would then have to make a second request to obtain the entire 892 current representation. 895 893 </p> 896 894 <p id="rfc.section.5.3.p.2">The "If-Range" header field allows a client to "short-circuit" the second request. Informally, its meaning is "if the representation … … 1196 1194 </p> 1197 1195 </div> 1198 <p id="rfc.section.A.p.3">The multipart/byteranges media type includes one or more parts, each with its own Content-Type and Content-Range fields. The 1199 required boundary parameter specifies the boundary string used to separate each body-part. 1196 <p id="rfc.section.A.p.3">The multipart/byteranges media type includes one or more parts, each with its own Content-Type and <a href="#header.content-range" class="smpl">Content-Range</a> fields. The required boundary parameter specifies the boundary string used to separate each body-part. 1200 1197 </p> 1201 1198 <p id="rfc.section.A.p.4"> </p> -
draft-ietf-httpbis/latest/p5-range.xml
r1737 r1738 261 261 HTTP/1.1 allows a client to request that only part (a range) of the 262 262 representation be included within the response. HTTP/1.1 uses range 263 units in the Range (<xref target="header.range"/>) and Content-Range (<xref target="header.content-range"/>) 263 units in the <x:ref>Range</x:ref> (<xref target="header.range"/>) and 264 <x:ref>Content-Range</x:ref> (<xref target="header.content-range"/>) 264 265 header fields. A representation can be broken down into subranges according 265 266 to various structural units. … … 278 279 <t> 279 280 If a range unit is not understood in a request, a server &MUST; ignore 280 the whole Rangeheader field (<xref target="header.range"/>).281 the whole <x:ref>Range</x:ref> header field (<xref target="header.range"/>). 281 282 If a range unit is not understood in a response, an intermediary 282 283 &SHOULD; pass the response to the client; a client &MUST; fail. … … 316 317 <t> 317 318 The server has fulfilled the partial GET request for the resource. 318 The request &MUST; have included a Range header field (<xref target="header.range"/>) 319 indicating the desired range, and &MAY; have included an If-Range 320 header field (<xref target="header.if-range"/>) to make the request conditional. 319 The request &MUST; have included a <x:ref>Range</x:ref> header field 320 (<xref target="header.range"/>) indicating the desired range, and &MAY; have 321 included an <x:ref>If-Range</x:ref> header field 322 (<xref target="header.if-range"/>) to make the request conditional. 321 323 </t> 322 324 <t> … … 324 326 <list style="symbols"> 325 327 <t> 326 Either a Content-Range header field (<xref target="header.content-range"/>) indicating 328 Either a <x:ref>Content-Range</x:ref> header field 329 (<xref target="header.content-range"/>) indicating 327 330 the range included with this response, or a multipart/byteranges 328 331 Content-Type including Content-Range fields for each part. If a … … 342 345 </t> 343 346 <t> 344 If a 206 is sent in response to a request with an If-Range header field, it 345 &SHOULD-NOT; include other representation header fields. Otherwise, the response 346 &MUST; include all of the representation header fields that would have been returned 347 with a <x:ref>200 (OK)</x:ref> response to the same request. 347 If a 206 is sent in response to a request with an <x:ref>If-Range</x:ref> 348 header field, it &SHOULD-NOT; include other representation header fields. 349 Otherwise, the response &MUST; include all of the representation header 350 fields that would have been returned with a <x:ref>200 (OK)</x:ref> response 351 to the same request. 348 352 </t> 349 353 <t> … … 359 363 <t> 360 364 A server &SHOULD; return a response with this status code if a request 361 included a Range header field (<xref target="header.range"/>), and none of 362 the ranges-specifier values in this field overlap the current extent 363 of the selected resource, and the request did not include an If-Range 364 header field (<xref target="header.if-range"/>). (For byte-ranges, 365 this means that the first-byte-pos of all of the byte-range-spec values were 366 greater than the current length of the selected resource.) 365 included a <x:ref>Range</x:ref> header field (<xref target="header.range"/>), 366 and none of the ranges-specifier values in this field overlap the current 367 extent of the selected resource, and the request did not include an 368 <x:ref>If-Range</x:ref> header field (<xref target="header.if-range"/>). 369 (For byte-ranges, this means that the first-byte-pos of all of the 370 byte-range-spec values were greater than the current length of the selected 371 resource.) 367 372 </t> 368 373 <t> 369 374 When this status code is returned for a byte-range request, the 370 response &SHOULD; include a Content-Rangeheader field375 response &SHOULD; include a <x:ref>Content-Range</x:ref> header field 371 376 specifying the current length of the representation (see <xref target="header.content-range"/>). 372 377 This response &MUST-NOT; use the multipart/byteranges content-type. For example, … … 382 387 &Note; Clients cannot depend on servers to send a <x:ref>416 (Requested 383 388 Range Not Satisfiable)</x:ref> response instead of a <x:ref>200 (OK)</x:ref> 384 response for an unsatisfiable Range header field, since not all servers385 implement this header field.389 response for an unsatisfiable <x:ref>Range</x:ref> header field, since not 390 all servers implement this header field. 386 391 </t> 387 392 </x:note> … … 395 400 example, a response to a request for a single range, or to a request 396 401 for a set of ranges that overlap without any holes), this content is 397 transmitted with a Content-Range header field, and a Content-Length header 398 field showing the number of bytes actually transferred. For example, 402 transmitted with a <x:ref>Content-Range</x:ref> header field, and a 403 Content-Length header field showing the number of bytes actually transferred. 404 For example, 399 405 </t> 400 406 <figure><artwork type="message/http; msgtype="response"" x:indent-with=" "> … … 466 472 header fields for the combined response, except that the client &MUST; 467 473 use other header fields provided in the new response, aside from 468 Content-Range, to replace all instances of the corresponding header469 fields in the stored response.474 <x:ref>Content-Range</x:ref>, to replace all instances of the corresponding 475 header fields in the stored response. 470 476 </t> 471 477 <t> … … 475 481 combined response &MUST; be recorded as a complete <x:ref>200 (OK)</x:ref> response 476 482 with a Content-Length header field that reflects the complete length. 477 Otherwise, the combined response(s) &MUST; include a Content-Range483 Otherwise, the combined response(s) &MUST; include a <x:ref>Content-Range</x:ref> 478 484 header field describing the included range(s) and be recorded as 479 485 incomplete. If the union consists of a discontinuous range of the … … 626 632 If the server ignores a byte-range-spec (for example if it is 627 633 syntactically invalid, or if it might be seen as a denial-of-service 628 attack), the server &SHOULD; treat the request as if the invalid Range634 attack), the server &SHOULD; treat the request as if the invalid <x:ref>Range</x:ref> 629 635 header field did not exist. (Normally, this means return a <x:ref>200 (OK)</x:ref> 630 636 response containing the full representation). … … 638 644 <t> 639 645 If a client has a partial copy of a representation and wishes 640 to have an up-to-date copy of the entire representation, it 641 could use the Rangeheader field with a conditional GET (using646 to have an up-to-date copy of the entire representation, it could use the 647 <x:ref>Range</x:ref> header field with a conditional GET (using 642 648 either or both of If-Unmodified-Since and If-Match.) However, if the 643 649 condition fails because the representation has been modified, the client … … 1244 1250 <t> 1245 1251 The multipart/byteranges media type includes one or more parts, each 1246 with its own Content-Type and Content-Range fields. The required1247 boundary parameter specifies the boundary string used to separate1252 with its own Content-Type and <x:ref>Content-Range</x:ref> fields. The 1253 required boundary parameter specifies the boundary string used to separate 1248 1254 each body-part. 1249 1255 </t> -
draft-ietf-httpbis/latest/p6-cache.html
r1737 r1738 876 876 time, as such responses are not usually useful to store. However, caches are not prohibited from storing such responses. 877 877 </p> 878 <p id="rfc.section.2.1.p.5">A response message is considered complete when all of the octets indicated by the message framing (<a href="#Part1" id="rfc.xref.Part1.11"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>) are received prior to the connection being closed. If the request is GET, the response status is <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a>, and the entire response header block has been received, a cache <em class="bcp14">MAY</em> store an incomplete response message body if the cache entry is recorded as incomplete. Likewise, a <a href="p5-range.html#status.206" class="smpl">206 (Partial Content)</a> response <em class="bcp14">MAY</em> be stored as if it were an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> cache entry. However, a cache <em class="bcp14">MUST NOT</em> store incomplete or partial content responses if it does not support the Range and Content-Range header fields or if it does 879 not understand the range units used in those fields. 878 <p id="rfc.section.2.1.p.5">A response message is considered complete when all of the octets indicated by the message framing (<a href="#Part1" id="rfc.xref.Part1.11"><cite title="HTTP/1.1, part 1: URIs, Connections, and Message Parsing">[Part1]</cite></a>) are received prior to the connection being closed. If the request is GET, the response status is <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a>, and the entire response header block has been received, a cache <em class="bcp14">MAY</em> store an incomplete response message body if the cache entry is recorded as incomplete. Likewise, a <a href="p5-range.html#status.206" class="smpl">206 (Partial Content)</a> response <em class="bcp14">MAY</em> be stored as if it were an incomplete <a href="p2-semantics.html#status.200" class="smpl">200 (OK)</a> cache entry. However, a cache <em class="bcp14">MUST NOT</em> store incomplete or partial content responses if it does not support the <a href="p5-range.html#range.retrieval.requests" class="smpl">Range</a> and <a href="p5-range.html#header.content-range" class="smpl">Content-Range</a> header fields or if it does not understand the range units used in those fields. 880 879 </p> 881 880 <p id="rfc.section.2.1.p.6">A cache <em class="bcp14">MAY</em> complete a stored incomplete response by making a subsequent range request (<a href="#Part5" id="rfc.xref.Part5.1"><cite title="HTTP/1.1, part 5: Range Requests and Partial Responses">[Part5]</cite></a>) and combining the successful response with the stored entry, as defined in <a href="#combining.responses" title="Combining Partial Content">Section 2.9</a>. A cache <em class="bcp14">MUST NOT</em> use an incomplete response to answer requests unless the response has been made complete or the request is partial and specifies … … 1207 1206 <li>retain any <a href="#header.warning" class="smpl">Warning</a> header fields in the stored response with warn-code 2xx; and, 1208 1207 </li> 1209 <li>use other header fields provided in the new response, aside from Content-Range, to replace all instances of the corresponding 1210 header fields in the stored response. 1208 <li>use other header fields provided in the new response, aside from <a href="p5-range.html#header.content-range" class="smpl">Content-Range</a>, to replace all instances of the corresponding header fields in the stored response. 1211 1209 </li> 1212 1210 </ul> … … 1312 1310 <div id="rfc.iref.n.3"></div> 1313 1311 <h4 id="rfc.section.3.2.1.6"><a href="#rfc.section.3.2.1.6">3.2.1.6</a> <a id="cache-request-directive.no-transform" href="#cache-request-directive.no-transform">no-transform</a></h4> 1314 <p id="rfc.section.3.2.1.6.p.1">The no-transform request directive indicates that an intermediary (whether or not it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, Content-Rangeor Content-Type request header fields, nor the request representation.1312 <p id="rfc.section.3.2.1.6.p.1">The no-transform request directive indicates that an intermediary (whether or not it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, <a href="p5-range.html#header.content-range" class="smpl">Content-Range</a> or Content-Type request header fields, nor the request representation. 1315 1313 </p> 1316 1314 <div id="rfc.iref.c.13"></div> … … 1428 1426 <div id="rfc.iref.n.6"></div> 1429 1427 <h4 id="rfc.section.3.2.2.9"><a href="#rfc.section.3.2.2.9">3.2.2.9</a> <a id="cache-response-directive.no-transform" href="#cache-response-directive.no-transform">no-transform</a></h4> 1430 <p id="rfc.section.3.2.2.9.p.1">The no-transform response directive indicates that an intermediary (regardless of whether it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, Content-Rangeor Content-Type response header fields, nor the response representation.1428 <p id="rfc.section.3.2.2.9.p.1">The no-transform response directive indicates that an intermediary (regardless of whether it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, <a href="p5-range.html#header.content-range" class="smpl">Content-Range</a> or Content-Type response header fields, nor the response representation. 1431 1429 </p> 1432 1430 <h3 id="rfc.section.3.2.3"><a href="#rfc.section.3.2.3">3.2.3</a> <a id="cache.control.extensions" href="#cache.control.extensions">Cache Control Extensions</a></h3> -
draft-ietf-httpbis/latest/p6-cache.xml
r1737 r1738 510 510 Likewise, a <x:ref>206 (Partial Content)</x:ref> response &MAY; be stored as if it were 511 511 an incomplete <x:ref>200 (OK)</x:ref> cache entry. However, a cache &MUST-NOT; store 512 incomplete or partial content responses if it does not support the Range513 and Content-Range header fields or if it does not understand the514 range units used in those fields.512 incomplete or partial content responses if it does not support the 513 <x:ref>Range</x:ref> and <x:ref>Content-Range</x:ref> header fields or if it 514 does not understand the range units used in those fields. 515 515 </t> 516 516 <t> … … 1149 1149 with warn-code 2xx; and,</t> 1150 1150 <t>use other header fields provided in the new response, aside 1151 from Content-Range, to replace all instances of the corresponding1152 header fields in the stored response.</t>1151 from <x:ref>Content-Range</x:ref>, to replace all instances of the 1152 corresponding header fields in the stored response.</t> 1153 1153 </list> 1154 1154 </t> … … 1358 1358 The no-transform request directive indicates that an intermediary 1359 1359 (whether or not it implements a cache) &MUST-NOT; change the 1360 Content-Encoding, Content-Range or Content-Type request header fields,1361 nor the request representation.1360 Content-Encoding, <x:ref>Content-Range</x:ref> or Content-Type request 1361 header fields, nor the request representation. 1362 1362 </t> 1363 1363 </section> … … 1587 1587 The no-transform response directive indicates that an intermediary 1588 1588 (regardless of whether it implements a cache) &MUST-NOT; change the 1589 Content-Encoding, Content-Range or Content-Type response header fields,1590 nor the response representation.1589 Content-Encoding, <x:ref>Content-Range</x:ref> or Content-Type response 1590 header fields, nor the response representation. 1591 1591 </t> 1592 1592 </section> … … 2354 2354 <x:source basename="p5-range" href="p5-range.xml"> 2355 2355 <x:defines>206 (Partial Content)</x:defines> 2356 <x:defines>Content-Range</x:defines> 2357 <x:defines>Range</x:defines> 2356 2358 </x:source> 2357 2359 </reference>
Note: See TracChangeset
for help on using the changeset viewer.