Changeset 614
- Timestamp:
- 21/07/09 11:28:41 (13 years ago)
- Location:
- draft-ietf-httpbis/latest
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p2-semantics.html
r609 r614 471 471 <tr> 472 472 <td class="header left"></td> 473 <td class="header right">July 13, 2009</td>473 <td class="header right">July 21, 2009</td> 474 474 </tr> 475 475 </table> … … 1215 1215 </p> 1216 1216 <div class="note"> 1217 <p> <b>Note:</b> <a href="#RFC1945" id="rfc.xref.RFC1945.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.0">[RFC1945]</cite></a> and <a href="#RFC2068" id="rfc.xref.RFC2068.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a> specify that the client is not allowed to change the method on the redirected request. However, most existing user agent implementations 1218 treat 302 as if it were a 303 response, performing a GET on the Location field-value regardless of the original request method. 1219 The status codes 303 and 307 have been added for servers that wish to make unambiguously clear which kind of reaction is expected 1220 of the client. 1217 <p> <b>Note:</b> HTTP/1.0 (<a href="#RFC1945" id="rfc.xref.RFC1945.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.0">[RFC1945]</cite></a>, <a href="http://tools.ietf.org/html/rfc1945#section-9.3">Section 9.3</a>) and the first version of HTTP/1.1 (<a href="#RFC2068" id="rfc.xref.RFC2068.1"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>, <a href="http://tools.ietf.org/html/rfc2068#section-10.3.3">Section 10.3.3</a>) specify that the client is not allowed to change the method on the redirected request. However, most existing user agent 1218 implementations treat 302 as if it were a 303 response, performing a GET on the Location field-value regardless of the original 1219 request method. Therefore, a previous version of this specification (<a href="#RFC2616" id="rfc.xref.RFC2616.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>, <a href="http://tools.ietf.org/html/rfc2616#section-10.3.3">Section 10.3.3</a>) has added the status codes 303 (<a href="#status.303" id="rfc.xref.status.303.2" title="303 See Other">Section 8.3.4</a>) and 307 (<a href="#status.307" id="rfc.xref.status.307.2" title="307 Temporary Redirect">Section 8.3.8</a>) for servers that wish to make unambiguously clear which kind of reaction is expected of the client. 1221 1220 </p> 1222 1221 </div> … … 1800 1799 <td>303</td> 1801 1800 <td>See Other</td> 1802 <td> <a href="#status.303" id="rfc.xref.status.303. 2" title="303 See Other">Section 8.3.4</a>1801 <td> <a href="#status.303" id="rfc.xref.status.303.3" title="303 See Other">Section 8.3.4</a> 1803 1802 </td> 1804 1803 </tr> … … 1824 1823 <td>307</td> 1825 1824 <td>Temporary Redirect</td> 1826 <td> <a href="#status.307" id="rfc.xref.status.307. 2" title="307 Temporary Redirect">Section 8.3.8</a>1825 <td> <a href="#status.307" id="rfc.xref.status.307.3" title="307 Temporary Redirect">Section 8.3.8</a> 1827 1826 </td> 1828 1827 </tr> … … 2211 2210 <p id="rfc.section.A.1.p.2">201 (Created) had a race that required an Etag be sent when a resource is first created. (<a href="#status.201" id="rfc.xref.status.201.3" title="201 Created">Section 8.2.2</a>). 2212 2211 </p> 2213 <p id="rfc.section.A.1.p.3">Rewrite of message transmission requirements to make it much harder for implementors to get it wrong, as the consequences 2212 <p id="rfc.section.A.1.p.3">303 (See Also) and 307 (Temporary Redirect) added to address user agent failure to implement status code 302 properly. (Section <a href="#status.303" id="rfc.xref.status.303.4" title="303 See Other">8.3.4</a> and <a href="#status.307" id="rfc.xref.status.307.4" title="307 Temporary Redirect">8.3.8</a>) 2213 </p> 2214 <p id="rfc.section.A.1.p.4">Rewrite of message transmission requirements to make it much harder for implementors to get it wrong, as the consequences 2214 2215 of errors here can have significant impact on the Internet, and to deal with the following problems: 2215 2216 </p> … … 2228 2229 <li>Allow servers to defend against denial-of-service attacks and broken clients.</li> 2229 2230 </ol> 2230 <p id="rfc.section.A.1.p. 4">This change adds the Expect header and 417 status code.</p>2231 <p id="rfc.section.A.1.p. 5">Clean up confusion between 403 and 404 responses. (Section <a href="#status.403" id="rfc.xref.status.403.3" title="403 Forbidden">8.4.4</a>, <a href="#status.404" id="rfc.xref.status.404.3" title="404 Not Found">8.4.5</a>, and <a href="#status.410" id="rfc.xref.status.410.3" title="410 Gone">8.4.11</a>)2232 </p> 2233 <p id="rfc.section.A.1.p. 6">The PATCH<span id="rfc.iref.p.3"></span><span id="rfc.iref.m.10"></span>, LINK<span id="rfc.iref.l.2"></span><span id="rfc.iref.m.11"></span>, UNLINK<span id="rfc.iref.u.2"></span><span id="rfc.iref.m.12"></span> methods were defined but not commonly implemented in previous versions of this specification. See <a href="http://tools.ietf.org/html/rfc2068#section-19.6.1">Section 19.6.1</a> of <a href="#RFC2068" id="rfc.xref.RFC2068.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>.2231 <p id="rfc.section.A.1.p.5">This change adds the Expect header and 417 status code.</p> 2232 <p id="rfc.section.A.1.p.6">Clean up confusion between 403 and 404 responses. (Section <a href="#status.403" id="rfc.xref.status.403.3" title="403 Forbidden">8.4.4</a>, <a href="#status.404" id="rfc.xref.status.404.3" title="404 Not Found">8.4.5</a>, and <a href="#status.410" id="rfc.xref.status.410.3" title="410 Gone">8.4.11</a>) 2233 </p> 2234 <p id="rfc.section.A.1.p.7">The PATCH<span id="rfc.iref.p.3"></span><span id="rfc.iref.m.10"></span>, LINK<span id="rfc.iref.l.2"></span><span id="rfc.iref.m.11"></span>, UNLINK<span id="rfc.iref.u.2"></span><span id="rfc.iref.m.12"></span> methods were defined but not commonly implemented in previous versions of this specification. See <a href="http://tools.ietf.org/html/rfc2068#section-19.6.1">Section 19.6.1</a> of <a href="#RFC2068" id="rfc.xref.RFC2068.2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2068]</cite></a>. 2234 2235 </p> 2235 2236 <h2 id="rfc.section.A.2"><a href="#rfc.section.A.2">A.2</a> <a id="changes.from.rfc.2616" href="#changes.from.rfc.2616">Changes from RFC 2616</a></h2> … … 2239 2240 </p> 2240 2241 <p id="rfc.section.A.2.p.3">Failed to consider that there are many other request methods that are safe to automatically redirect, and further that the 2241 user agent is able to make that determination based on the request method semantics. (Sections <a href="#status.301" id="rfc.xref.status.301.3" title="301 Moved Permanently">8.3.2</a>, <a href="#status.302" id="rfc.xref.status.302.3" title="302 Found">8.3.3</a> and <a href="#status.307" id="rfc.xref.status.307. 3" title="307 Temporary Redirect">8.3.8</a>)2242 user agent is able to make that determination based on the request method semantics. (Sections <a href="#status.301" id="rfc.xref.status.301.3" title="301 Moved Permanently">8.3.2</a>, <a href="#status.302" id="rfc.xref.status.302.3" title="302 Found">8.3.3</a> and <a href="#status.307" id="rfc.xref.status.307.5" title="307 Temporary Redirect">8.3.8</a>) 2242 2243 </p> 2243 2244 <p id="rfc.section.A.2.p.4">Deprecate 305 Use Proxy status code, because user agents did not implement it. It used to indicate that the requested resource … … 2375 2376 <h2 id="rfc.section.C.1"><a href="#rfc.section.C.1">C.1</a> Since RFC2616 2376 2377 </h2> 2377 <p id="rfc.section.C.1.p.1">Extracted relevant partitions from <a href="#RFC2616" id="rfc.xref.RFC2616. 2"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>.2378 <p id="rfc.section.C.1.p.1">Extracted relevant partitions from <a href="#RFC2616" id="rfc.xref.RFC2616.3"><cite title="Hypertext Transfer Protocol -- HTTP/1.1">[RFC2616]</cite></a>. 2378 2379 </p> 2379 2380 <h2 id="rfc.section.C.2"><a href="#rfc.section.C.2">C.2</a> Since draft-ietf-httpbis-p2-semantics-00 … … 2499 2500 </ul> 2500 2501 <h2 id="rfc.section.C.9"><a href="#rfc.section.C.9">C.9</a> <a id="changes.since.07" href="#changes.since.07">Since draft-ietf-httpbis-p2-semantics-07</a></h2> 2501 <p id="rfc.section.C.9.p.1">None.</p> 2502 <p id="rfc.section.C.9.p.1">Closed issues: </p> 2503 <ul> 2504 <li> <<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/140">http://tools.ietf.org/wg/httpbis/trac/ticket/140</a>>: "update note citing RFC 1945 and 2068" 2505 </li> 2506 </ul> 2502 2507 <h1 id="rfc.index"><a href="#rfc.index">Index</a></h1> 2503 2508 <p class="noprint"><a href="#rfc.index.1">1</a> <a href="#rfc.index.2">2</a> <a href="#rfc.index.3">3</a> <a href="#rfc.index.4">4</a> <a href="#rfc.index.5">5</a> <a href="#rfc.index.A">A</a> <a href="#rfc.index.C">C</a> <a href="#rfc.index.D">D</a> <a href="#rfc.index.E">E</a> <a href="#rfc.index.F">F</a> <a href="#rfc.index.G">G</a> <a href="#rfc.index.H">H</a> <a href="#rfc.index.I">I</a> <a href="#rfc.index.L">L</a> <a href="#rfc.index.M">M</a> <a href="#rfc.index.O">O</a> <a href="#rfc.index.P">P</a> <a href="#rfc.index.R">R</a> <a href="#rfc.index.S">S</a> <a href="#rfc.index.T">T</a> <a href="#rfc.index.U">U</a> … … 2524 2529 <li class="indline1">301 Moved Permanently (status code) <a class="iref" href="#rfc.xref.status.301.1">4</a>, <a class="iref" href="#rfc.iref.35"><b>8.3.2</b></a>, <a class="iref" href="#rfc.xref.status.301.2">10.2</a>, <a class="iref" href="#rfc.xref.status.301.3">A.2</a></li> 2525 2530 <li class="indline1">302 Found (status code) <a class="iref" href="#rfc.xref.status.302.1">4</a>, <a class="iref" href="#rfc.iref.36"><b>8.3.3</b></a>, <a class="iref" href="#rfc.xref.status.302.2">10.2</a>, <a class="iref" href="#rfc.xref.status.302.3">A.2</a></li> 2526 <li class="indline1">303 See Other (status code) <a class="iref" href="#rfc.xref.status.303.1">4</a>, <a class="iref" href="#rfc. iref.37"><b>8.3.4</b></a>, <a class="iref" href="#rfc.xref.status.303.2">10.2</a></li>2531 <li class="indline1">303 See Other (status code) <a class="iref" href="#rfc.xref.status.303.1">4</a>, <a class="iref" href="#rfc.xref.status.303.2">8.3.3</a>, <a class="iref" href="#rfc.iref.37"><b>8.3.4</b></a>, <a class="iref" href="#rfc.xref.status.303.3">10.2</a>, <a class="iref" href="#rfc.xref.status.303.4">A.1</a></li> 2527 2532 <li class="indline1">304 Not Modified (status code) <a class="iref" href="#rfc.xref.status.304.1">4</a>, <a class="iref" href="#rfc.iref.38"><b>8.3.5</b></a>, <a class="iref" href="#rfc.xref.status.304.2">10.2</a></li> 2528 2533 <li class="indline1">305 Use Proxy (status code) <a class="iref" href="#rfc.xref.status.305.1">4</a>, <a class="iref" href="#rfc.iref.39"><b>8.3.6</b></a>, <a class="iref" href="#rfc.xref.status.305.2">10.2</a>, <a class="iref" href="#rfc.xref.status.305.3">A.2</a></li> 2529 2534 <li class="indline1">306 (Unused) (status code) <a class="iref" href="#rfc.iref.40"><b>8.3.7</b></a>, <a class="iref" href="#rfc.xref.status.306.1">10.2</a></li> 2530 <li class="indline1">307 Temporary Redirect (status code) <a class="iref" href="#rfc.xref.status.307.1">4</a>, <a class="iref" href="#rfc. iref.41"><b>8.3.8</b></a>, <a class="iref" href="#rfc.xref.status.307.2">10.2</a>, <a class="iref" href="#rfc.xref.status.307.3">A.2</a></li>2535 <li class="indline1">307 Temporary Redirect (status code) <a class="iref" href="#rfc.xref.status.307.1">4</a>, <a class="iref" href="#rfc.xref.status.307.2">8.3.3</a>, <a class="iref" href="#rfc.iref.41"><b>8.3.8</b></a>, <a class="iref" href="#rfc.xref.status.307.3">10.2</a>, <a class="iref" href="#rfc.xref.status.307.4">A.1</a>, <a class="iref" href="#rfc.xref.status.307.5">A.2</a></li> 2531 2536 </ul> 2532 2537 </li> … … 2726 2731 <li class="indline1">Referer header <a class="iref" href="#rfc.xref.header.referer.1">3</a>, <a class="iref" href="#rfc.iref.r.1"><b>9.6</b></a>, <a class="iref" href="#rfc.xref.header.referer.2">10.3</a>, <a class="iref" href="#rfc.xref.header.referer.3">A.2</a></li> 2727 2732 <li class="indline1">Retry-After header <a class="iref" href="#rfc.xref.header.retry-after.1">5</a>, <a class="iref" href="#rfc.iref.r.2"><b>9.7</b></a>, <a class="iref" href="#rfc.xref.header.retry-after.2">10.3</a></li> 2728 <li class="indline1"><em>RFC1945</em> <a class="iref" href="#rfc.xref.RFC1945.1">8.3.3</a>, <a class="iref" href="#RFC1945"><b>13.2</b></a></li> 2733 <li class="indline1"><em>RFC1945</em> <a class="iref" href="#rfc.xref.RFC1945.1">8.3.3</a>, <a class="iref" href="#RFC1945"><b>13.2</b></a><ul class="ind"> 2734 <li class="indline1"><em>Section 9.3</em> <a class="iref" href="#rfc.xref.RFC1945.1">8.3.3</a></li> 2735 </ul> 2736 </li> 2729 2737 <li class="indline1"><em>RFC2068</em> <a class="iref" href="#rfc.xref.RFC2068.1">8.3.3</a>, <a class="iref" href="#RFC2068"><b>13.2</b></a>, <a class="iref" href="#rfc.xref.RFC2068.2">A.1</a><ul class="ind"> 2738 <li class="indline1"><em>Section 10.3.3</em> <a class="iref" href="#rfc.xref.RFC2068.1">8.3.3</a></li> 2730 2739 <li class="indline1"><em>Section 19.6.1</em> <a class="iref" href="#rfc.xref.RFC2068.2">A.1</a></li> 2731 2740 </ul> 2732 2741 </li> 2733 2742 <li class="indline1"><em>RFC2119</em> <a class="iref" href="#rfc.xref.RFC2119.1">1.1</a>, <a class="iref" href="#RFC2119"><b>13.1</b></a></li> 2734 <li class="indline1"><em>RFC2616</em> <a class="iref" href="#rfc.xref.RFC2616.1">1</a>, <a class="iref" href="#RFC2616"><b>13.2</b></a>, <a class="iref" href="#rfc.xref.RFC2616.2">C.1</a></li> 2743 <li class="indline1"><em>RFC2616</em> <a class="iref" href="#rfc.xref.RFC2616.1">1</a>, <a class="iref" href="#rfc.xref.RFC2616.2">8.3.3</a>, <a class="iref" href="#RFC2616"><b>13.2</b></a>, <a class="iref" href="#rfc.xref.RFC2616.3">C.1</a><ul class="ind"> 2744 <li class="indline1"><em>Section 10.3.3</em> <a class="iref" href="#rfc.xref.RFC2616.2">8.3.3</a></li> 2745 </ul> 2746 </li> 2735 2747 <li class="indline1"><em>RFC2817</em> <a class="iref" href="#rfc.xref.RFC2817.1">7.9</a>, <a class="iref" href="#rfc.xref.RFC2817.2">10.2</a>, <a class="iref" href="#RFC2817"><b>13.2</b></a>, <a class="iref" href="#rfc.xref.RFC2817.3">A.2</a><ul class="ind"> 2736 2748 <li class="indline1"><em>Section 7.1</em> <a class="iref" href="#rfc.xref.RFC2817.2">10.2</a>, <a class="iref" href="#rfc.xref.RFC2817.3">A.2</a></li> … … 2769 2781 <li class="indline1">301 Moved Permanently <a class="iref" href="#rfc.xref.status.301.1">4</a>, <a class="iref" href="#rfc.iref.s.12"><b>8.3.2</b></a>, <a class="iref" href="#rfc.xref.status.301.2">10.2</a>, <a class="iref" href="#rfc.xref.status.301.3">A.2</a></li> 2770 2782 <li class="indline1">302 Found <a class="iref" href="#rfc.xref.status.302.1">4</a>, <a class="iref" href="#rfc.iref.s.13"><b>8.3.3</b></a>, <a class="iref" href="#rfc.xref.status.302.2">10.2</a>, <a class="iref" href="#rfc.xref.status.302.3">A.2</a></li> 2771 <li class="indline1">303 See Other <a class="iref" href="#rfc.xref.status.303.1">4</a>, <a class="iref" href="#rfc. iref.s.14"><b>8.3.4</b></a>, <a class="iref" href="#rfc.xref.status.303.2">10.2</a></li>2783 <li class="indline1">303 See Other <a class="iref" href="#rfc.xref.status.303.1">4</a>, <a class="iref" href="#rfc.xref.status.303.2">8.3.3</a>, <a class="iref" href="#rfc.iref.s.14"><b>8.3.4</b></a>, <a class="iref" href="#rfc.xref.status.303.3">10.2</a>, <a class="iref" href="#rfc.xref.status.303.4">A.1</a></li> 2772 2784 <li class="indline1">304 Not Modified <a class="iref" href="#rfc.xref.status.304.1">4</a>, <a class="iref" href="#rfc.iref.s.15"><b>8.3.5</b></a>, <a class="iref" href="#rfc.xref.status.304.2">10.2</a></li> 2773 2785 <li class="indline1">305 Use Proxy <a class="iref" href="#rfc.xref.status.305.1">4</a>, <a class="iref" href="#rfc.iref.s.16"><b>8.3.6</b></a>, <a class="iref" href="#rfc.xref.status.305.2">10.2</a>, <a class="iref" href="#rfc.xref.status.305.3">A.2</a></li> 2774 2786 <li class="indline1">306 (Unused) <a class="iref" href="#rfc.iref.s.17"><b>8.3.7</b></a>, <a class="iref" href="#rfc.xref.status.306.1">10.2</a></li> 2775 <li class="indline1">307 Temporary Redirect <a class="iref" href="#rfc.xref.status.307.1">4</a>, <a class="iref" href="#rfc. iref.s.18"><b>8.3.8</b></a>, <a class="iref" href="#rfc.xref.status.307.2">10.2</a>, <a class="iref" href="#rfc.xref.status.307.3">A.2</a></li>2787 <li class="indline1">307 Temporary Redirect <a class="iref" href="#rfc.xref.status.307.1">4</a>, <a class="iref" href="#rfc.xref.status.307.2">8.3.3</a>, <a class="iref" href="#rfc.iref.s.18"><b>8.3.8</b></a>, <a class="iref" href="#rfc.xref.status.307.3">10.2</a>, <a class="iref" href="#rfc.xref.status.307.4">A.1</a>, <a class="iref" href="#rfc.xref.status.307.5">A.2</a></li> 2776 2788 <li class="indline1">400 Bad Request <a class="iref" href="#rfc.xref.status.400.1">4</a>, <a class="iref" href="#rfc.iref.s.19"><b>8.4.1</b></a>, <a class="iref" href="#rfc.xref.status.400.2">10.2</a></li> 2777 2789 <li class="indline1">401 Unauthorized <a class="iref" href="#rfc.xref.status.401.1">4</a>, <a class="iref" href="#rfc.iref.s.20"><b>8.4.2</b></a>, <a class="iref" href="#rfc.xref.status.401.2">10.2</a></li> -
draft-ietf-httpbis/latest/p2-semantics.xml
r609 r614 1337 1337 <x:note> 1338 1338 <t> 1339 <x:h>Note:</x:h> <xref target="RFC1945"/> and <xref target="RFC2068"/> specify that the client is not allowed 1340 to change the method on the redirected request. However, most 1341 existing user agent implementations treat 302 as if it were a 303 1342 response, performing a GET on the Location field-value regardless 1343 of the original request method. The status codes 303 and 307 have 1344 been added for servers that wish to make unambiguously clear which 1345 kind of reaction is expected of the client. 1339 <x:h>Note:</x:h> HTTP/1.0 (<xref target="RFC1945" x:fmt="," x:sec="9.3"/>) 1340 and the first version of HTTP/1.1 (<xref target="RFC2068" x:fmt="," x:sec ="10.3.3"/>) 1341 specify that the client is not allowed to change the method on the 1342 redirected request. However, most existing user agent implementations 1343 treat 302 as if it were a 303 response, performing a GET on the Location 1344 field-value regardless of the original request method. Therefore, a 1345 previous version of this specification 1346 (<xref target="RFC2616" x:fmt="," x:sec="10.3.3"/>) has added the 1347 status codes 1348 <xref target="status.303" format="none">303</xref> and 1349 <xref target="status.307" format="none">307</xref> for servers that wish 1350 to make unambiguously clear which kind of reaction is expected of the 1351 client. 1346 1352 </t> 1347 1353 </x:note> … … 3141 3147 </t> 3142 3148 <t> 3149 303 (See Also) and 307 (Temporary Redirect) added to address user agent 3150 failure to implement status code 302 properly. 3151 (Section <xref target="status.303" format="counter"/> and <xref target="status.307" format="counter"/>) 3152 </t> 3153 <t> 3143 3154 Rewrite of message transmission requirements to make it much harder 3144 3155 for implementors to get it wrong, as the consequences of errors here … … 3605 3616 <section title="Since draft-ietf-httpbis-p2-semantics-07" anchor="changes.since.07"> 3606 3617 <t> 3607 None. 3618 Closed issues: 3619 <list style="symbols"> 3620 <t> 3621 <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/140"/>: 3622 "update note citing RFC 1945 and 2068" 3623 </t> 3624 </list> 3608 3625 </t> 3609 3626 </section>
Note: See TracChangeset
for help on using the changeset viewer.