| draft-ietf-httpbis-p2-semantics-25.txt | draft-ietf-httpbis-p2-semantics-26.txt | |||
|---|---|---|---|---|
| HTTPbis Working Group R. Fielding, Ed. | HTTPbis Working Group R. Fielding, Ed. | |||
| Internet-Draft Adobe | Internet-Draft Adobe | |||
| Obsoletes: 2616 (if approved) J. Reschke, Ed. | Obsoletes: 2616 (if approved) J. Reschke, Ed. | |||
| Updates: 2817 (if approved) greenbytes | Updates: 2817 (if approved) greenbytes | |||
| Intended status: Standards Track November 17, 2013 | Intended status: Standards Track February 6, 2014 | |||
| Expires: May 21, 2014 | Expires: August 10, 2014 | |||
| Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content | |||
| draft-ietf-httpbis-p2-semantics-25 | draft-ietf-httpbis-p2-semantics-26 | |||
| Abstract | Abstract | |||
| The Hypertext Transfer Protocol (HTTP) is an application-level | The Hypertext Transfer Protocol (HTTP) is a stateless application- | |||
| protocol for distributed, collaborative, hypertext information | level protocol for distributed, collaborative, hypertext information | |||
| systems. This document defines the semantics of HTTP/1.1 messages, | systems. This document defines the semantics of HTTP/1.1 messages, | |||
| as expressed by request methods, request header fields, response | as expressed by request methods, request header fields, response | |||
| status codes, and response header fields, along with the payload of | status codes, and response header fields, along with the payload of | |||
| messages (metadata and body content) and mechanisms for content | messages (metadata and body content) and mechanisms for content | |||
| negotiation. | negotiation. | |||
| Editorial Note (To be removed by RFC Editor) | Editorial Note (To be removed by RFC Editor) | |||
| Discussion of this draft takes place on the HTTPBIS working group | Discussion of this draft takes place on the HTTPBIS working group | |||
| mailing list (ietf-http-wg@w3.org), which is archived at | mailing list (ietf-http-wg@w3.org), which is archived at | |||
| <http://lists.w3.org/Archives/Public/ietf-http-wg/>. | <http://lists.w3.org/Archives/Public/ietf-http-wg/>. | |||
| The current issues list is at | The current issues list is at | |||
| <http://tools.ietf.org/wg/httpbis/trac/report/3> and related | <http://tools.ietf.org/wg/httpbis/trac/report/3> and related | |||
| documents (including fancy diffs) can be found at | documents (including fancy diffs) can be found at | |||
| <http://tools.ietf.org/wg/httpbis/>. | <http://tools.ietf.org/wg/httpbis/>. | |||
| The changes in this draft are summarized in Appendix E.2. | The changes in this draft are summarized in Appendix E.3. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on May 21, 2014. | This Internet-Draft will expire on August 10, 2014. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2013 IETF Trust and the persons identified as the | Copyright (c) 2014 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| skipping to change at page 3, line 19 | skipping to change at page 3, line 19 | |||
| 4.3.1. GET . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 4.3.1. GET . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 4.3.2. HEAD . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 4.3.2. HEAD . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 4.3.3. POST . . . . . . . . . . . . . . . . . . . . . . . . . 25 | 4.3.3. POST . . . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 4.3.4. PUT . . . . . . . . . . . . . . . . . . . . . . . . . 26 | 4.3.4. PUT . . . . . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 4.3.5. DELETE . . . . . . . . . . . . . . . . . . . . . . . . 29 | 4.3.5. DELETE . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 4.3.6. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 30 | 4.3.6. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 4.3.7. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . 31 | 4.3.7. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 4.3.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . 32 | 4.3.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . 32 | |||
| 5. Request Header Fields . . . . . . . . . . . . . . . . . . . . 33 | 5. Request Header Fields . . . . . . . . . . . . . . . . . . . . 33 | |||
| 5.1. Controls . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 5.1. Controls . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 5.1.1. Expect . . . . . . . . . . . . . . . . . . . . . . . . 34 | 5.1.1. Expect . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 5.1.2. Max-Forwards . . . . . . . . . . . . . . . . . . . . . 36 | 5.1.2. Max-Forwards . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 5.2. Conditionals . . . . . . . . . . . . . . . . . . . . . . . 36 | 5.2. Conditionals . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 5.3. Content Negotiation . . . . . . . . . . . . . . . . . . . 37 | 5.3. Content Negotiation . . . . . . . . . . . . . . . . . . . 37 | |||
| 5.3.1. Quality Values . . . . . . . . . . . . . . . . . . . . 37 | 5.3.1. Quality Values . . . . . . . . . . . . . . . . . . . . 37 | |||
| 5.3.2. Accept . . . . . . . . . . . . . . . . . . . . . . . . 38 | 5.3.2. Accept . . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 5.3.3. Accept-Charset . . . . . . . . . . . . . . . . . . . . 40 | 5.3.3. Accept-Charset . . . . . . . . . . . . . . . . . . . . 40 | |||
| 5.3.4. Accept-Encoding . . . . . . . . . . . . . . . . . . . 41 | 5.3.4. Accept-Encoding . . . . . . . . . . . . . . . . . . . 41 | |||
| 5.3.5. Accept-Language . . . . . . . . . . . . . . . . . . . 42 | 5.3.5. Accept-Language . . . . . . . . . . . . . . . . . . . 42 | |||
| 5.4. Authentication Credentials . . . . . . . . . . . . . . . . 43 | 5.4. Authentication Credentials . . . . . . . . . . . . . . . . 43 | |||
| 5.5. Request Context . . . . . . . . . . . . . . . . . . . . . 44 | 5.5. Request Context . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 5.5.1. From . . . . . . . . . . . . . . . . . . . . . . . . . 44 | 5.5.1. From . . . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 5.5.2. Referer . . . . . . . . . . . . . . . . . . . . . . . 45 | 5.5.2. Referer . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
| 5.5.3. User-Agent . . . . . . . . . . . . . . . . . . . . . . 46 | 5.5.3. User-Agent . . . . . . . . . . . . . . . . . . . . . . 46 | |||
| 6. Response Status Codes . . . . . . . . . . . . . . . . . . . . 47 | 6. Response Status Codes . . . . . . . . . . . . . . . . . . . . 47 | |||
| 6.1. Overview of Status Codes . . . . . . . . . . . . . . . . . 48 | 6.1. Overview of Status Codes . . . . . . . . . . . . . . . . . 47 | |||
| 6.2. Informational 1xx . . . . . . . . . . . . . . . . . . . . 50 | 6.2. Informational 1xx . . . . . . . . . . . . . . . . . . . . 49 | |||
| 6.2.1. 100 Continue . . . . . . . . . . . . . . . . . . . . . 50 | 6.2.1. 100 Continue . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 6.2.2. 101 Switching Protocols . . . . . . . . . . . . . . . 50 | 6.2.2. 101 Switching Protocols . . . . . . . . . . . . . . . 49 | |||
| 6.3. Successful 2xx . . . . . . . . . . . . . . . . . . . . . . 51 | 6.3. Successful 2xx . . . . . . . . . . . . . . . . . . . . . . 50 | |||
| 6.3.1. 200 OK . . . . . . . . . . . . . . . . . . . . . . . . 51 | 6.3.1. 200 OK . . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
| 6.3.2. 201 Created . . . . . . . . . . . . . . . . . . . . . 52 | 6.3.2. 201 Created . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 6.3.3. 202 Accepted . . . . . . . . . . . . . . . . . . . . . 52 | 6.3.3. 202 Accepted . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 6.3.4. 203 Non-Authoritative Information . . . . . . . . . . 52 | 6.3.4. 203 Non-Authoritative Information . . . . . . . . . . 51 | |||
| 6.3.5. 204 No Content . . . . . . . . . . . . . . . . . . . . 53 | 6.3.5. 204 No Content . . . . . . . . . . . . . . . . . . . . 52 | |||
| 6.3.6. 205 Reset Content . . . . . . . . . . . . . . . . . . 53 | 6.3.6. 205 Reset Content . . . . . . . . . . . . . . . . . . 52 | |||
| 6.4. Redirection 3xx . . . . . . . . . . . . . . . . . . . . . 54 | 6.4. Redirection 3xx . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 6.4.1. 300 Multiple Choices . . . . . . . . . . . . . . . . . 55 | 6.4.1. 300 Multiple Choices . . . . . . . . . . . . . . . . . 54 | |||
| 6.4.2. 301 Moved Permanently . . . . . . . . . . . . . . . . 56 | 6.4.2. 301 Moved Permanently . . . . . . . . . . . . . . . . 55 | |||
| 6.4.3. 302 Found . . . . . . . . . . . . . . . . . . . . . . 56 | 6.4.3. 302 Found . . . . . . . . . . . . . . . . . . . . . . 55 | |||
| 6.4.4. 303 See Other . . . . . . . . . . . . . . . . . . . . 57 | 6.4.4. 303 See Other . . . . . . . . . . . . . . . . . . . . 56 | |||
| 6.4.5. 305 Use Proxy . . . . . . . . . . . . . . . . . . . . 57 | 6.4.5. 305 Use Proxy . . . . . . . . . . . . . . . . . . . . 56 | |||
| 6.4.6. 306 (Unused) . . . . . . . . . . . . . . . . . . . . . 58 | 6.4.6. 306 (Unused) . . . . . . . . . . . . . . . . . . . . . 56 | |||
| 6.4.7. 307 Temporary Redirect . . . . . . . . . . . . . . . . 58 | 6.4.7. 307 Temporary Redirect . . . . . . . . . . . . . . . . 57 | |||
| 6.5. Client Error 4xx . . . . . . . . . . . . . . . . . . . . . 58 | 6.5. Client Error 4xx . . . . . . . . . . . . . . . . . . . . . 57 | |||
| 6.5.1. 400 Bad Request . . . . . . . . . . . . . . . . . . . 58 | 6.5.1. 400 Bad Request . . . . . . . . . . . . . . . . . . . 57 | |||
| 6.5.2. 402 Payment Required . . . . . . . . . . . . . . . . . 58 | 6.5.2. 402 Payment Required . . . . . . . . . . . . . . . . . 57 | |||
| 6.5.3. 403 Forbidden . . . . . . . . . . . . . . . . . . . . 59 | 6.5.3. 403 Forbidden . . . . . . . . . . . . . . . . . . . . 57 | |||
| 6.5.4. 404 Not Found . . . . . . . . . . . . . . . . . . . . 59 | 6.5.4. 404 Not Found . . . . . . . . . . . . . . . . . . . . 58 | |||
| 6.5.5. 405 Method Not Allowed . . . . . . . . . . . . . . . . 59 | 6.5.5. 405 Method Not Allowed . . . . . . . . . . . . . . . . 58 | |||
| 6.5.6. 406 Not Acceptable . . . . . . . . . . . . . . . . . . 59 | 6.5.6. 406 Not Acceptable . . . . . . . . . . . . . . . . . . 58 | |||
| 6.5.7. 408 Request Timeout . . . . . . . . . . . . . . . . . 60 | 6.5.7. 408 Request Timeout . . . . . . . . . . . . . . . . . 59 | |||
| 6.5.8. 409 Conflict . . . . . . . . . . . . . . . . . . . . . 60 | 6.5.8. 409 Conflict . . . . . . . . . . . . . . . . . . . . . 59 | |||
| 6.5.9. 410 Gone . . . . . . . . . . . . . . . . . . . . . . . 60 | 6.5.9. 410 Gone . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
| 6.5.10. 411 Length Required . . . . . . . . . . . . . . . . . 61 | 6.5.10. 411 Length Required . . . . . . . . . . . . . . . . . 60 | |||
| 6.5.11. 413 Payload Too Large . . . . . . . . . . . . . . . . 61 | 6.5.11. 413 Payload Too Large . . . . . . . . . . . . . . . . 60 | |||
| 6.5.12. 414 URI Too Long . . . . . . . . . . . . . . . . . . . 61 | 6.5.12. 414 URI Too Long . . . . . . . . . . . . . . . . . . . 60 | |||
| 6.5.13. 415 Unsupported Media Type . . . . . . . . . . . . . . 62 | 6.5.13. 415 Unsupported Media Type . . . . . . . . . . . . . . 60 | |||
| 6.5.14. 417 Expectation Failed . . . . . . . . . . . . . . . . 62 | 6.5.14. 417 Expectation Failed . . . . . . . . . . . . . . . . 61 | |||
| 6.5.15. 426 Upgrade Required . . . . . . . . . . . . . . . . . 62 | 6.5.15. 426 Upgrade Required . . . . . . . . . . . . . . . . . 61 | |||
| 6.6. Server Error 5xx . . . . . . . . . . . . . . . . . . . . . 62 | 6.6. Server Error 5xx . . . . . . . . . . . . . . . . . . . . . 61 | |||
| 6.6.1. 500 Internal Server Error . . . . . . . . . . . . . . 63 | 6.6.1. 500 Internal Server Error . . . . . . . . . . . . . . 61 | |||
| 6.6.2. 501 Not Implemented . . . . . . . . . . . . . . . . . 63 | 6.6.2. 501 Not Implemented . . . . . . . . . . . . . . . . . 62 | |||
| 6.6.3. 502 Bad Gateway . . . . . . . . . . . . . . . . . . . 63 | 6.6.3. 502 Bad Gateway . . . . . . . . . . . . . . . . . . . 62 | |||
| 6.6.4. 503 Service Unavailable . . . . . . . . . . . . . . . 63 | 6.6.4. 503 Service Unavailable . . . . . . . . . . . . . . . 62 | |||
| 6.6.5. 504 Gateway Timeout . . . . . . . . . . . . . . . . . 63 | 6.6.5. 504 Gateway Timeout . . . . . . . . . . . . . . . . . 62 | |||
| 6.6.6. 505 HTTP Version Not Supported . . . . . . . . . . . . 63 | 6.6.6. 505 HTTP Version Not Supported . . . . . . . . . . . . 62 | |||
| 7. Response Header Fields . . . . . . . . . . . . . . . . . . . . 64 | 7. Response Header Fields . . . . . . . . . . . . . . . . . . . . 63 | |||
| 7.1. Control Data . . . . . . . . . . . . . . . . . . . . . . . 64 | 7.1. Control Data . . . . . . . . . . . . . . . . . . . . . . . 63 | |||
| 7.1.1. Origination Date . . . . . . . . . . . . . . . . . . . 64 | 7.1.1. Origination Date . . . . . . . . . . . . . . . . . . . 63 | |||
| 7.1.2. Location . . . . . . . . . . . . . . . . . . . . . . . 68 | 7.1.2. Location . . . . . . . . . . . . . . . . . . . . . . . 67 | |||
| 7.1.3. Retry-After . . . . . . . . . . . . . . . . . . . . . 69 | 7.1.3. Retry-After . . . . . . . . . . . . . . . . . . . . . 68 | |||
| 7.1.4. Vary . . . . . . . . . . . . . . . . . . . . . . . . . 70 | 7.1.4. Vary . . . . . . . . . . . . . . . . . . . . . . . . . 69 | |||
| 7.2. Validator Header Fields . . . . . . . . . . . . . . . . . 71 | 7.2. Validator Header Fields . . . . . . . . . . . . . . . . . 70 | |||
| 7.3. Authentication Challenges . . . . . . . . . . . . . . . . 72 | 7.3. Authentication Challenges . . . . . . . . . . . . . . . . 71 | |||
| 7.4. Response Context . . . . . . . . . . . . . . . . . . . . . 72 | 7.4. Response Context . . . . . . . . . . . . . . . . . . . . . 71 | |||
| 7.4.1. Allow . . . . . . . . . . . . . . . . . . . . . . . . 72 | 7.4.1. Allow . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
| 7.4.2. Server . . . . . . . . . . . . . . . . . . . . . . . . 73 | 7.4.2. Server . . . . . . . . . . . . . . . . . . . . . . . . 72 | |||
| 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 73 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 72 | |||
| 8.1. Method Registry . . . . . . . . . . . . . . . . . . . . . 74 | 8.1. Method Registry . . . . . . . . . . . . . . . . . . . . . 73 | |||
| 8.1.1. Procedure . . . . . . . . . . . . . . . . . . . . . . 74 | 8.1.1. Procedure . . . . . . . . . . . . . . . . . . . . . . 73 | |||
| 8.1.2. Considerations for New Methods . . . . . . . . . . . . 74 | 8.1.2. Considerations for New Methods . . . . . . . . . . . . 73 | |||
| 8.1.3. Registrations . . . . . . . . . . . . . . . . . . . . 75 | 8.1.3. Registrations . . . . . . . . . . . . . . . . . . . . 74 | |||
| 8.2. Status Code Registry . . . . . . . . . . . . . . . . . . . 75 | 8.2. Status Code Registry . . . . . . . . . . . . . . . . . . . 74 | |||
| 8.2.1. Procedure . . . . . . . . . . . . . . . . . . . . . . 75 | 8.2.1. Procedure . . . . . . . . . . . . . . . . . . . . . . 74 | |||
| 8.2.2. Considerations for New Status Codes . . . . . . . . . 76 | 8.2.2. Considerations for New Status Codes . . . . . . . . . 75 | |||
| 8.2.3. Registrations . . . . . . . . . . . . . . . . . . . . 76 | 8.2.3. Registrations . . . . . . . . . . . . . . . . . . . . 75 | |||
| 8.3. Header Field Registry . . . . . . . . . . . . . . . . . . 77 | 8.3. Header Field Registry . . . . . . . . . . . . . . . . . . 76 | |||
| 8.3.1. Considerations for New Header Fields . . . . . . . . . 78 | 8.3.1. Considerations for New Header Fields . . . . . . . . . 77 | |||
| 8.3.2. Registrations . . . . . . . . . . . . . . . . . . . . 80 | 8.3.2. Registrations . . . . . . . . . . . . . . . . . . . . 79 | |||
| 8.4. Content Coding Registry . . . . . . . . . . . . . . . . . 80 | 8.4. Content Coding Registry . . . . . . . . . . . . . . . . . 79 | |||
| 8.4.1. Procedure . . . . . . . . . . . . . . . . . . . . . . 80 | 8.4.1. Procedure . . . . . . . . . . . . . . . . . . . . . . 80 | |||
| 8.4.2. Registrations . . . . . . . . . . . . . . . . . . . . 81 | 8.4.2. Registrations . . . . . . . . . . . . . . . . . . . . 80 | |||
| 9. Security Considerations . . . . . . . . . . . . . . . . . . . 81 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 80 | |||
| 9.1. Attacks Based On File and Path Names . . . . . . . . . . . 81 | 9.1. Attacks Based On File and Path Names . . . . . . . . . . . 81 | |||
| 9.2. Personal Information . . . . . . . . . . . . . . . . . . . 82 | 9.2. Attacks Based On Command, Code, or Query Injection . . . . 81 | |||
| 9.3. Sensitive Information in URIs . . . . . . . . . . . . . . 82 | 9.3. Disclosure of Personal Information . . . . . . . . . . . . 82 | |||
| 9.4. Product Information . . . . . . . . . . . . . . . . . . . 82 | 9.4. Disclosure of Sensitive Information in URIs . . . . . . . 82 | |||
| 9.5. Fragment after Redirects . . . . . . . . . . . . . . . . . 83 | 9.5. Disclosure of Fragment after Redirects . . . . . . . . . . 82 | |||
| 9.6. Browser Fingerprinting . . . . . . . . . . . . . . . . . . 83 | 9.6. Disclosure of Product Information . . . . . . . . . . . . 83 | |||
| 9.7. Browser Fingerprinting . . . . . . . . . . . . . . . . . . 83 | ||||
| 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 84 | 10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 84 | |||
| 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 84 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 84 | |||
| 11.1. Normative References . . . . . . . . . . . . . . . . . . . 84 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 84 | |||
| 11.2. Informative References . . . . . . . . . . . . . . . . . . 85 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 85 | |||
| Appendix A. Differences between HTTP and MIME . . . . . . . . . . 87 | Appendix A. Differences between HTTP and MIME . . . . . . . . . . 87 | |||
| A.1. MIME-Version . . . . . . . . . . . . . . . . . . . . . . . 88 | A.1. MIME-Version . . . . . . . . . . . . . . . . . . . . . . . 88 | |||
| A.2. Conversion to Canonical Form . . . . . . . . . . . . . . . 88 | A.2. Conversion to Canonical Form . . . . . . . . . . . . . . . 88 | |||
| A.3. Conversion of Date Formats . . . . . . . . . . . . . . . . 88 | A.3. Conversion of Date Formats . . . . . . . . . . . . . . . . 88 | |||
| A.4. Conversion of Content-Encoding . . . . . . . . . . . . . . 88 | A.4. Conversion of Content-Encoding . . . . . . . . . . . . . . 89 | |||
| A.5. Conversion of Content-Transfer-Encoding . . . . . . . . . 89 | A.5. Conversion of Content-Transfer-Encoding . . . . . . . . . 89 | |||
| A.6. MHTML and Line Length Limitations . . . . . . . . . . . . 89 | A.6. MHTML and Line Length Limitations . . . . . . . . . . . . 89 | |||
| Appendix B. Changes from RFC 2616 . . . . . . . . . . . . . . . . 89 | Appendix B. Changes from RFC 2616 . . . . . . . . . . . . . . . . 89 | |||
| Appendix C. Imported ABNF . . . . . . . . . . . . . . . . . . . . 92 | Appendix C. Imported ABNF . . . . . . . . . . . . . . . . . . . . 92 | |||
| Appendix D. Collected ABNF . . . . . . . . . . . . . . . . . . . 92 | Appendix D. Collected ABNF . . . . . . . . . . . . . . . . . . . 92 | |||
| Appendix E. Change Log (to be removed by RFC Editor before | Appendix E. Change Log (to be removed by RFC Editor before | |||
| publication) . . . . . . . . . . . . . . . . . . . . 95 | publication) . . . . . . . . . . . . . . . . . . . . 95 | |||
| E.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 95 | E.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 95 | |||
| E.2. Since draft-ietf-httpbis-p2-semantics-24 . . . . . . . . . 95 | E.2. Since draft-ietf-httpbis-p2-semantics-24 . . . . . . . . . 95 | |||
| E.3. Since draft-ietf-httpbis-p2-semantics-25 . . . . . . . . . 96 | ||||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 | |||
| 1. Introduction | 1. Introduction | |||
| Each Hypertext Transfer Protocol (HTTP) message is either a request | Each Hypertext Transfer Protocol (HTTP) message is either a request | |||
| or a response. A server listens on a connection for a request, | or a response. A server listens on a connection for a request, | |||
| parses each message received, interprets the message semantics in | parses each message received, interprets the message semantics in | |||
| relation to the identified request target, and responds to that | relation to the identified request target, and responds to that | |||
| request with one or more response messages. A client constructs | request with one or more response messages. A client constructs | |||
| request messages to communicate specific intentions, and examines | request messages to communicate specific intentions, and examines | |||
| skipping to change at page 6, line 47 | skipping to change at page 6, line 47 | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
| Conformance criteria and considerations regarding error handling are | Conformance criteria and considerations regarding error handling are | |||
| defined in Section 2.5 of [Part1]. | defined in Section 2.5 of [Part1]. | |||
| 1.2. Syntax Notation | 1.2. Syntax Notation | |||
| This specification uses the Augmented Backus-Naur Form (ABNF) | This specification uses the Augmented Backus-Naur Form (ABNF) | |||
| notation of [RFC5234] with the list rule extension defined in Section | notation of [RFC5234] with a list extension, defined in Section 7 of | |||
| 7 of [Part1]. Appendix C describes rules imported from other | [Part1], that allows for compact definition of comma-separated lists | |||
| documents. Appendix D shows the collected ABNF with the list rule | using a '#' operator (similar to how the '*' operator indicates | |||
| expanded. | repetition). Appendix C describes rules imported from other | |||
| documents. Appendix D shows the collected grammar with all list | ||||
| operators expanded to standard ABNF notation. | ||||
| This specification uses the terms "character", "character encoding | This specification uses the terms "character", "character encoding | |||
| scheme", "charset", and "protocol element" as they are defined in | scheme", "charset", and "protocol element" as they are defined in | |||
| [RFC6365]. | [RFC6365]. | |||
| 2. Resources | 2. Resources | |||
| The target of an HTTP request is called a resource. HTTP does not | The target of an HTTP request is called a resource. HTTP does not | |||
| limit the nature of a resource; it merely defines an interface that | limit the nature of a resource; it merely defines an interface that | |||
| might be used to interact with resources. Each resource is | might be used to interact with resources. Each resource is | |||
| skipping to change at page 7, line 24 | skipping to change at page 7, line 26 | |||
| When a client constructs an HTTP/1.1 request message, it sends the | When a client constructs an HTTP/1.1 request message, it sends the | |||
| target URI in one of various forms, as defined in (Section 5.3 of | target URI in one of various forms, as defined in (Section 5.3 of | |||
| [Part1]). When a request is received, the server reconstructs an | [Part1]). When a request is received, the server reconstructs an | |||
| effective request URI for the target resource (Section 5.5 of | effective request URI for the target resource (Section 5.5 of | |||
| [Part1]). | [Part1]). | |||
| One design goal of HTTP is to separate resource identification from | One design goal of HTTP is to separate resource identification from | |||
| request semantics, which is made possible by vesting the request | request semantics, which is made possible by vesting the request | |||
| semantics in the request method (Section 4) and a few request- | semantics in the request method (Section 4) and a few request- | |||
| modifying header fields (Section 5). Resource owners SHOULD NOT | modifying header fields (Section 5). If there is a conflict between | |||
| include request semantics within a URI, such as by specifying an | the method semantics and any semantic implied by the URI itself, as | |||
| action to invoke within the path or query components of the effective | described in Section 4.2.1, the method semantics take precedence. | |||
| request URI, unless those semantics are disabled when they are | ||||
| inconsistent with the request method. | ||||
| 3. Representations | 3. Representations | |||
| If we consider that a resource could be anything, and that the | Considering that a resource could be anything, and that the uniform | |||
| uniform interface provided by HTTP is similar to a window through | interface provided by HTTP is similar to a window through which one | |||
| which one can observe and act upon such a thing only through the | can observe and act upon such a thing only through the communication | |||
| communication of messages to some independent actor on the other | of messages to some independent actor on the other side, an | |||
| side, then we need an abstraction to represent ("take the place of") | abstraction is needed to represent ("take the place of") the current | |||
| the current or desired state of that thing in our communications. We | or desired state of that thing in our communications. That | |||
| call that abstraction a representation [REST]. | abstraction is called a representation [REST]. | |||
| For the purposes of HTTP, a "representation" is information that is | For the purposes of HTTP, a "representation" is information that is | |||
| intended to reflect a past, current, or desired state of a given | intended to reflect a past, current, or desired state of a given | |||
| resource, in a format that can be readily communicated via the | resource, in a format that can be readily communicated via the | |||
| protocol, and that consists of a set of representation metadata and a | protocol, and that consists of a set of representation metadata and a | |||
| potentially unbounded stream of representation data. | potentially unbounded stream of representation data. | |||
| An origin server might be provided with, or capable of generating, | An origin server might be provided with, or capable of generating, | |||
| multiple representations that are each intended to reflect the | multiple representations that are each intended to reflect the | |||
| current state of a target resource. In such cases, some algorithm is | current state of a target resource. In such cases, some algorithm is | |||
| used by the origin server to select one of those representations as | used by the origin server to select one of those representations as | |||
| most applicable to a given request, usually based on content | most applicable to a given request, usually based on content | |||
| negotiation. We refer to that one representation as the "selected | negotiation. This "selected representation" is used to provide the | |||
| representation" and use its particular data and metadata for | data and metadata for evaluating conditional requests [Part4] and | |||
| evaluating conditional requests [Part4] and constructing the payload | constructing the payload for 200 (OK) and 304 (Not Modified) | |||
| for 200 (OK) and 304 (Not Modified) responses to GET (Section 4.3.1). | responses to GET (Section 4.3.1). | |||
| 3.1. Representation Metadata | 3.1. Representation Metadata | |||
| Representation header fields provide metadata about the | Representation header fields provide metadata about the | |||
| representation. When a message includes a payload body, the | representation. When a message includes a payload body, the | |||
| representation header fields describe how to interpret the | representation header fields describe how to interpret the | |||
| representation data enclosed in the payload body. In a response to a | representation data enclosed in the payload body. In a response to a | |||
| HEAD request, the representation header fields describe the | HEAD request, the representation header fields describe the | |||
| representation data that would have been enclosed in the payload body | representation data that would have been enclosed in the payload body | |||
| if the same request had been a GET. | if the same request had been a GET. | |||
| skipping to change at page 8, line 45 | skipping to change at page 8, line 44 | |||
| to provide open and extensible data typing and type negotiation. | to provide open and extensible data typing and type negotiation. | |||
| Media types define both a data format and various processing models: | Media types define both a data format and various processing models: | |||
| how to process that data in accordance with each context in which it | how to process that data in accordance with each context in which it | |||
| is received. | is received. | |||
| media-type = type "/" subtype *( OWS ";" OWS parameter ) | media-type = type "/" subtype *( OWS ";" OWS parameter ) | |||
| type = token | type = token | |||
| subtype = token | subtype = token | |||
| The type/subtype MAY be followed by parameters in the form of | The type/subtype MAY be followed by parameters in the form of | |||
| attribute/value pairs. | name=value pairs. | |||
| parameter = attribute "=" value | parameter = token "=" ( token / quoted-string ) | |||
| attribute = token | ||||
| value = word | ||||
| The type, subtype, and parameter attribute names are case- | The type, subtype, and parameter name tokens are case-insensitive. | |||
| insensitive. Parameter values might or might not be case-sensitive, | Parameter values might or might not be case-sensitive, depending on | |||
| depending on the semantics of the parameter name. The presence or | the semantics of the parameter name. The presence or absence of a | |||
| absence of a parameter might be significant to the processing of a | parameter might be significant to the processing of a media-type, | |||
| media-type, depending on its definition within the media type | depending on its definition within the media type registry. | |||
| registry. | ||||
| A parameter value that matches the token production can be | A parameter value that matches the token production can be | |||
| transmitted as either a token or within a quoted-string. The quoted | transmitted as either a token or within a quoted-string. The quoted | |||
| and unquoted values are equivalent. For example, the following | and unquoted values are equivalent. For example, the following | |||
| examples are all equivalent, but the first is preferred for | examples are all equivalent, but the first is preferred for | |||
| consistency: | consistency: | |||
| text/html;charset=utf-8 | text/html;charset=utf-8 | |||
| text/html;charset=UTF-8 | text/html;charset=UTF-8 | |||
| Text/HTML;Charset="utf-8" | Text/HTML;Charset="utf-8" | |||
| skipping to change at page 12, line 25 | skipping to change at page 12, line 25 | |||
| Content-Encoding = 1#content-coding | Content-Encoding = 1#content-coding | |||
| An example of its use is | An example of its use is | |||
| Content-Encoding: gzip | Content-Encoding: gzip | |||
| If one or more encodings have been applied to a representation, the | If one or more encodings have been applied to a representation, the | |||
| sender that applied the encodings MUST generate a Content-Encoding | sender that applied the encodings MUST generate a Content-Encoding | |||
| header field that lists the content codings in the order in which | header field that lists the content codings in the order in which | |||
| they were applied. Additional information about the encoding | they were applied. Additional information about the encoding | |||
| parameters MAY be provided by other header fields not defined by this | parameters can be provided by other header fields not defined by this | |||
| specification. | specification. | |||
| Unlike Transfer-Encoding (Section 3.3.1 of [Part1]), the codings | Unlike Transfer-Encoding (Section 3.3.1 of [Part1]), the codings | |||
| listed in Content-Encoding are a characteristic of the | listed in Content-Encoding are a characteristic of the | |||
| representation; the representation is defined in terms of the coded | representation; the representation is defined in terms of the coded | |||
| form, and all other metadata about the representation is about the | form, and all other metadata about the representation is about the | |||
| coded form unless otherwise noted in the metadata definition. | coded form unless otherwise noted in the metadata definition. | |||
| Typically, the representation is only decoded just prior to rendering | Typically, the representation is only decoded just prior to rendering | |||
| or analogous usage. | or analogous usage. | |||
| skipping to change at page 14, line 47 | skipping to change at page 14, line 47 | |||
| resource identified by the Content-Location field-value. However, | resource identified by the Content-Location field-value. However, | |||
| such an assertion cannot be trusted unless it can be verified by | such an assertion cannot be trusted unless it can be verified by | |||
| other means (not defined by this specification). The information | other means (not defined by this specification). The information | |||
| might still be useful for revision history links. | might still be useful for revision history links. | |||
| o Otherwise, the payload is unidentified. | o Otherwise, the payload is unidentified. | |||
| For a response message, the following rules are applied in order | For a response message, the following rules are applied in order | |||
| until a match is found: | until a match is found: | |||
| 1. If the request is GET or HEAD and the response status code is 200 | 1. If the request method is GET or HEAD and the response status code | |||
| (OK), 204 (No Content), 206 (Partial Content), or 304 (Not | is 200 (OK), 204 (No Content), 206 (Partial Content), or 304 (Not | |||
| Modified), the payload is a representation of the resource | Modified), the payload is a representation of the resource | |||
| identified by the effective request URI (Section 5.5 of [Part1]). | identified by the effective request URI (Section 5.5 of [Part1]). | |||
| 2. If the request is GET or HEAD and the response status code is 203 | 2. If the request method is GET or HEAD and the response status code | |||
| (Non-Authoritative Information), the payload is a potentially | is 203 (Non-Authoritative Information), the payload is a | |||
| modified or enhanced representation of the target resource as | potentially modified or enhanced representation of the target | |||
| provided by an intermediary. | resource as provided by an intermediary. | |||
| 3. If the response has a Content-Location header field and its | 3. If the response has a Content-Location header field and its | |||
| field-value is a reference to the same URI as the effective | field-value is a reference to the same URI as the effective | |||
| request URI, the payload is a representation of the resource | request URI, the payload is a representation of the resource | |||
| identified by the effective request URI. | identified by the effective request URI. | |||
| 4. If the response has a Content-Location header field and its | 4. If the response has a Content-Location header field and its | |||
| field-value is a reference to a URI different from the effective | field-value is a reference to a URI different from the effective | |||
| request URI, then the sender asserts that the payload is a | request URI, then the sender asserts that the payload is a | |||
| representation of the resource identified by the Content-Location | representation of the resource identified by the Content-Location | |||
| skipping to change at page 15, line 48 | skipping to change at page 15, line 48 | |||
| It has the same syntax and semantics as the header field of the same | It has the same syntax and semantics as the header field of the same | |||
| name defined for MIME body parts in Section 4 of [RFC2557]. However, | name defined for MIME body parts in Section 4 of [RFC2557]. However, | |||
| its appearance in an HTTP message has some special implications for | its appearance in an HTTP message has some special implications for | |||
| HTTP recipients. | HTTP recipients. | |||
| If Content-Location is included in a 2xx (Successful) response | If Content-Location is included in a 2xx (Successful) response | |||
| message and its value refers (after conversion to absolute form) to a | message and its value refers (after conversion to absolute form) to a | |||
| URI that is the same as the effective request URI, then the recipient | URI that is the same as the effective request URI, then the recipient | |||
| MAY consider the payload to be a current representation of that | MAY consider the payload to be a current representation of that | |||
| resource at the time indicated by the message origination date. For | resource at the time indicated by the message origination date. For | |||
| a GET or HEAD request, this is the same as the default semantics when | a GET (Section 4.3.1) or HEAD (Section 4.3.2) request, this is the | |||
| no Content-Location is provided by the server. For a state-changing | same as the default semantics when no Content-Location is provided by | |||
| request like PUT or POST, it implies that the server's response | the server. For a state-changing request like PUT (Section 4.3.4) or | |||
| contains the new representation of that resource, thereby | POST (Section 4.3.3), it implies that the server's response contains | |||
| distinguishing it from representations that might only report about | the new representation of that resource, thereby distinguishing it | |||
| the action (e.g., "It worked!"). This allows authoring applications | from representations that might only report about the action (e.g., | |||
| to update their local copies without the need for a subsequent GET | "It worked!"). This allows authoring applications to update their | |||
| request. | local copies without the need for a subsequent GET request. | |||
| If Content-Location is included in a 2xx (Successful) response | If Content-Location is included in a 2xx (Successful) response | |||
| message and its field-value refers to a URI that differs from the | message and its field-value refers to a URI that differs from the | |||
| effective request URI, then the origin server claims that the URI is | effective request URI, then the origin server claims that the URI is | |||
| an identifier for a different resource corresponding to the enclosed | an identifier for a different resource corresponding to the enclosed | |||
| representation. Such a claim can only be trusted if both identifiers | representation. Such a claim can only be trusted if both identifiers | |||
| share the same resource owner, which cannot be programmatically | share the same resource owner, which cannot be programmatically | |||
| determined via HTTP. | determined via HTTP. | |||
| o For a response to a GET or HEAD request, this is an indication | o For a response to a GET or HEAD request, this is an indication | |||
| skipping to change at page 17, line 39 | skipping to change at page 17, line 39 | |||
| the message "payload". In some cases, a payload might contain only | the message "payload". In some cases, a payload might contain only | |||
| the associated representation's header fields (e.g., responses to | the associated representation's header fields (e.g., responses to | |||
| HEAD) or only some part(s) of the representation data (e.g., the 206 | HEAD) or only some part(s) of the representation data (e.g., the 206 | |||
| (Partial Content) status code). | (Partial Content) status code). | |||
| The purpose of a payload in a request is defined by the method | The purpose of a payload in a request is defined by the method | |||
| semantics. For example, a representation in the payload of a PUT | semantics. For example, a representation in the payload of a PUT | |||
| request (Section 4.3.4) represents the desired state of the target | request (Section 4.3.4) represents the desired state of the target | |||
| resource if the request is successfully applied, whereas a | resource if the request is successfully applied, whereas a | |||
| representation in the payload of a POST request (Section 4.3.3) | representation in the payload of a POST request (Section 4.3.3) | |||
| represents an anonymous resource for providing data to be processed, | represents information to be processed by the target resource. | |||
| such as the information that a user entered within an HTML form. | ||||
| In a response, the payload's purpose is defined by both the request | In a response, the payload's purpose is defined by both the request | |||
| method and the response status code. For example, the payload of a | method and the response status code. For example, the payload of a | |||
| 200 (OK) response to GET (Section 4.3.1) represents the current state | 200 (OK) response to GET (Section 4.3.1) represents the current state | |||
| of the target resource, as observed at the time of the message | of the target resource, as observed at the time of the message | |||
| origination date (Section 7.1.1.2), whereas the payload of the same | origination date (Section 7.1.1.2), whereas the payload of the same | |||
| status code in a response to POST might represent either the | status code in a response to POST might represent either the | |||
| processing result or the new state of the target resource after | processing result or the new state of the target resource after | |||
| applying the processing. Response messages with an error status code | applying the processing. Response messages with an error status code | |||
| usually contain a payload that represents the error condition, such | usually contain a payload that represents the error condition, such | |||
| skipping to change at page 18, line 16 | skipping to change at page 18, line 15 | |||
| Header fields that specifically describe the payload, rather than the | Header fields that specifically describe the payload, rather than the | |||
| associated representation, are referred to as "payload header | associated representation, are referred to as "payload header | |||
| fields". Payload header fields are defined in other parts of this | fields". Payload header fields are defined in other parts of this | |||
| specification, due to their impact on message parsing. | specification, due to their impact on message parsing. | |||
| +-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| | Header Field Name | Defined in... | | | Header Field Name | Defined in... | | |||
| +-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| | Content-Length | Section 3.3.2 of [Part1] | | | Content-Length | Section 3.3.2 of [Part1] | | |||
| | Content-Range | Section 4.2 of [Part5] | | | Content-Range | Section 4.2 of [Part5] | | |||
| | Trailer | Section 4.4 of [Part1] | | ||||
| | Transfer-Encoding | Section 3.3.1 of [Part1] | | | Transfer-Encoding | Section 3.3.1 of [Part1] | | |||
| +-------------------+--------------------------+ | +-------------------+--------------------------+ | |||
| 3.4. Content Negotiation | 3.4. Content Negotiation | |||
| When responses convey payload information, whether indicating a | When responses convey payload information, whether indicating a | |||
| success or an error, the origin server often has different ways of | success or an error, the origin server often has different ways of | |||
| representing that information; for example, in different formats, | representing that information; for example, in different formats, | |||
| languages, or encodings. Likewise, different users or user agents | languages, or encodings. Likewise, different users or user agents | |||
| might have differing capabilities, characteristics, or preferences | might have differing capabilities, characteristics, or preferences | |||
| skipping to change at page 19, line 50 | skipping to change at page 19, line 50 | |||
| algorithms for generating responses to a request; and, | algorithms for generating responses to a request; and, | |||
| o It limits the reusability of responses for shared caching. | o It limits the reusability of responses for shared caching. | |||
| A user agent cannot rely on proactive negotiation preferences being | A user agent cannot rely on proactive negotiation preferences being | |||
| consistently honored, since the origin server might not implement | consistently honored, since the origin server might not implement | |||
| proactive negotiation for the requested resource or might decide that | proactive negotiation for the requested resource or might decide that | |||
| sending a response that doesn't conform to the user agent's | sending a response that doesn't conform to the user agent's | |||
| preferences is better than sending a 406 (Not Acceptable) response. | preferences is better than sending a 406 (Not Acceptable) response. | |||
| An origin server MAY generate a Vary header field (Section 7.1.4) in | A Vary header field (Section 7.1.4) is often sent in a response | |||
| responses that are subject to proactive negotiation to indicate what | subject to proactive negotiation to indicate what parts of the | |||
| parameters of request information might be used in its selection | request information were used in the selection algorithm. | |||
| algorithm, thereby providing a means for recipients to determine the | ||||
| reusability of that same response for user agents with differing | ||||
| request information. | ||||
| 3.4.2. Reactive Negotiation | 3.4.2. Reactive Negotiation | |||
| With reactive negotiation (a.k.a., agent-driven negotiation), | With reactive negotiation (a.k.a., agent-driven negotiation), | |||
| selection of the best response representation (regardless of the | selection of the best response representation (regardless of the | |||
| status code) is performed by the user agent after receiving an | status code) is performed by the user agent after receiving an | |||
| initial response from the origin server that contains a list of | initial response from the origin server that contains a list of | |||
| resources for alternative representations. If the user agent is not | resources for alternative representations. If the user agent is not | |||
| satisfied by the initial response representation, it can perform a | satisfied by the initial response representation, it can perform a | |||
| GET request on one or more of the alternative resources, selected | GET request on one or more of the alternative resources, selected | |||
| skipping to change at page 22, line 27 | skipping to change at page 22, line 27 | |||
| | | target resource. | | | | | target resource. | | | |||
| | CONNECT | Establish a tunnel to the server identified by | 4.3.6 | | | CONNECT | Establish a tunnel to the server identified by | 4.3.6 | | |||
| | | the target resource. | | | | | the target resource. | | | |||
| | OPTIONS | Describe the communication options for the | 4.3.7 | | | OPTIONS | Describe the communication options for the | 4.3.7 | | |||
| | | target resource. | | | | | target resource. | | | |||
| | TRACE | Perform a message loop-back test along the path | 4.3.8 | | | TRACE | Perform a message loop-back test along the path | 4.3.8 | | |||
| | | to the target resource. | | | | | to the target resource. | | | |||
| +---------+-------------------------------------------------+-------+ | +---------+-------------------------------------------------+-------+ | |||
| All general-purpose servers MUST support the methods GET and HEAD. | All general-purpose servers MUST support the methods GET and HEAD. | |||
| All other methods are OPTIONAL; when implemented, a server MUST | All other methods are OPTIONAL. | |||
| implement the above methods according to the semantics defined for | ||||
| them in Section 4.3. | ||||
| Additional methods, outside the scope of this specification, have | Additional methods, outside the scope of this specification, have | |||
| been standardized for use in HTTP. All such methods ought to be | been standardized for use in HTTP. All such methods ought to be | |||
| registered within the HTTP Method Registry maintained by IANA, as | registered within the HTTP Method Registry maintained by IANA, as | |||
| defined in Section 8.1. | defined in Section 8.1. | |||
| The set of methods allowed by a target resource can be listed in an | The set of methods allowed by a target resource can be listed in an | |||
| Allow header field (Section 7.4.1). However, the set of allowed | Allow header field (Section 7.4.1). However, the set of allowed | |||
| methods can change dynamically. When a request method is received | methods can change dynamically. When a request method is received | |||
| that is unrecognized or not implemented by an origin server, the | that is unrecognized or not implemented by an origin server, the | |||
| skipping to change at page 24, line 16 | skipping to change at page 24, line 13 | |||
| Like the definition of safe, the idempotent property only applies to | Like the definition of safe, the idempotent property only applies to | |||
| what has been requested by the user; a server is free to log each | what has been requested by the user; a server is free to log each | |||
| request separately, retain a revision control history, or implement | request separately, retain a revision control history, or implement | |||
| other non-idempotent side-effects for each idempotent request. | other non-idempotent side-effects for each idempotent request. | |||
| Idempotent methods are distinguished because the request can be | Idempotent methods are distinguished because the request can be | |||
| repeated automatically if a communication failure occurs before the | repeated automatically if a communication failure occurs before the | |||
| client is able to read the server's response. For example, if a | client is able to read the server's response. For example, if a | |||
| client sends a PUT request and the underlying connection is closed | client sends a PUT request and the underlying connection is closed | |||
| before any response is received, then the client can establish a new | before any response is received, then the client can establish a new | |||
| connection and retry the idempotent request because it knows that | connection and retry the idempotent request. It knows that repeating | |||
| repeating the request will have the same effect (even if the original | the request will have the same intended effect, even if the original | |||
| request succeeded, though the status codes might differ in response). | request succeeded, though the response might differ. | |||
| Note, however, that repeated communication failures might indicate | ||||
| that the server has failed in general, or that something in the | ||||
| request is triggering a connection drop. | ||||
| 4.2.3. Cacheable Methods | 4.2.3. Cacheable Methods | |||
| Request methods can be defined as "cacheable" to indicate that | Request methods can be defined as "cacheable" to indicate that | |||
| responses to them are allowed to be stored for future reuse; for | responses to them are allowed to be stored for future reuse; for | |||
| specific requirements see [Part6]. In general, safe methods that do | specific requirements see [Part6]. In general, safe methods that do | |||
| not depend on a current or authoritative response are defined as | not depend on a current or authoritative response are defined as | |||
| cacheable; this specification defines GET, HEAD and POST as | cacheable; this specification defines GET, HEAD and POST as | |||
| cacheable, although the overwhelming majority of cache | cacheable, although the overwhelming majority of cache | |||
| implementations only support GET and HEAD. | implementations only support GET and HEAD. | |||
| skipping to change at page 24, line 43 | skipping to change at page 24, line 37 | |||
| 4.3. Method Definitions | 4.3. Method Definitions | |||
| 4.3.1. GET | 4.3.1. GET | |||
| The GET method requests transfer of a current selected representation | The GET method requests transfer of a current selected representation | |||
| for the target resource. GET is the primary mechanism of information | for the target resource. GET is the primary mechanism of information | |||
| retrieval and the focus of almost all performance optimizations. | retrieval and the focus of almost all performance optimizations. | |||
| Hence, when people speak of retrieving some identifiable information | Hence, when people speak of retrieving some identifiable information | |||
| via HTTP, they are generally referring to making a GET request. | via HTTP, they are generally referring to making a GET request. | |||
| It is tempting to think of resource identifiers as remote filesystem | It is tempting to think of resource identifiers as remote file system | |||
| pathnames, and of representations as being a copy of the contents of | pathnames, and of representations as being a copy of the contents of | |||
| such files. In fact, that is how many resources are implemented (see | such files. In fact, that is how many resources are implemented (see | |||
| Section 9.1 for related security considerations). However, there are | Section 9.1 for related security considerations). However, there are | |||
| no such limitations in practice. The HTTP interface for a resource | no such limitations in practice. The HTTP interface for a resource | |||
| is just as likely to be implemented as a tree of content objects, a | is just as likely to be implemented as a tree of content objects, a | |||
| programmatic view on various database records, or a gateway to other | programmatic view on various database records, or a gateway to other | |||
| information systems. Even when the URI mapping mechanism is tied to | information systems. Even when the URI mapping mechanism is tied to | |||
| a filesystem, an origin server might be configured to execute the | a file system, an origin server might be configured to execute the | |||
| files with the request as input and send the output as the | files with the request as input and send the output as the | |||
| representation, rather than transfer the files directly. Regardless, | representation, rather than transfer the files directly. Regardless, | |||
| only the origin server needs to know how each of its resource | only the origin server needs to know how each of its resource | |||
| identifiers corresponds to an implementation, and how each | identifiers corresponds to an implementation, and how each | |||
| implementation manages to select and send a current representation of | implementation manages to select and send a current representation of | |||
| the target resource in a response to GET. | the target resource in a response to GET. | |||
| A client can alter the semantics of GET to be a "range request", | A client can alter the semantics of GET to be a "range request", | |||
| requesting transfer of only some part(s) of the selected | requesting transfer of only some part(s) of the selected | |||
| representation, by sending a Range header field in the request | representation, by sending a Range header field in the request | |||
| skipping to change at page 30, line 30 | skipping to change at page 30, line 24 | |||
| Responses to the DELETE method are not cacheable. If a DELETE | Responses to the DELETE method are not cacheable. If a DELETE | |||
| request passes through a cache that has one or more stored responses | request passes through a cache that has one or more stored responses | |||
| for the effective request URI, those stored responses will be | for the effective request URI, those stored responses will be | |||
| invalidated (see Section 4.4 of [Part6]). | invalidated (see Section 4.4 of [Part6]). | |||
| 4.3.6. CONNECT | 4.3.6. CONNECT | |||
| The CONNECT method requests that the recipient establish a tunnel to | The CONNECT method requests that the recipient establish a tunnel to | |||
| the destination origin server identified by the request-target and, | the destination origin server identified by the request-target and, | |||
| if successful, thereafter restrict its behavior to blind forwarding | if successful, thereafter restrict its behavior to blind forwarding | |||
| of packets, in both directions, until the tunnel is closed. | of packets, in both directions, until the tunnel is closed. Tunnels | |||
| are commonly used to create an end-to-end virtual connection, through | ||||
| one or more proxies, which can then be secured using TLS (Transport | ||||
| Layer Security, [RFC5246]). | ||||
| CONNECT is intended only for use in requests to a proxy. An origin | CONNECT is intended only for use in requests to a proxy. An origin | |||
| server that receives a CONNECT request for itself MAY respond with a | server that receives a CONNECT request for itself MAY respond with a | |||
| 2xx status code to indicate that a connection is established. | 2xx status code to indicate that a connection is established. | |||
| However, most origin servers do not implement CONNECT. | However, most origin servers do not implement CONNECT. | |||
| A client sending a CONNECT request MUST send the authority form of | A client sending a CONNECT request MUST send the authority form of | |||
| request-target (Section 5.3 of [Part1]); i.e., the request-target | request-target (Section 5.3 of [Part1]); i.e., the request-target | |||
| consists of only the host name and port number of the tunnel | consists of only the host name and port number of the tunnel | |||
| destination, separated by a colon. For example, | destination, separated by a colon. For example, | |||
| skipping to change at page 38, line 33 | skipping to change at page 38, line 28 | |||
| small set of desired types, as in the case of a request for an in- | small set of desired types, as in the case of a request for an in- | |||
| line image. | line image. | |||
| Accept = #( media-range [ accept-params ] ) | Accept = #( media-range [ accept-params ] ) | |||
| media-range = ( "*/*" | media-range = ( "*/*" | |||
| / ( type "/" "*" ) | / ( type "/" "*" ) | |||
| / ( type "/" subtype ) | / ( type "/" subtype ) | |||
| ) *( OWS ";" OWS parameter ) | ) *( OWS ";" OWS parameter ) | |||
| accept-params = weight *( accept-ext ) | accept-params = weight *( accept-ext ) | |||
| accept-ext = OWS ";" OWS token [ "=" word ] | accept-ext = OWS ";" OWS token [ "=" ( token / quoted-string ) ] | |||
| The asterisk "*" character is used to group media types into ranges, | The asterisk "*" character is used to group media types into ranges, | |||
| with "*/*" indicating all media types and "type/*" indicating all | with "*/*" indicating all media types and "type/*" indicating all | |||
| subtypes of that type. The media-range can include media type | subtypes of that type. The media-range can include media type | |||
| parameters that are applicable to that range. | parameters that are applicable to that range. | |||
| Each media-range might be followed by zero or more applicable media | Each media-range might be followed by zero or more applicable media | |||
| type parameters (e.g., charset), an optional "q" parameter for | type parameters (e.g., charset), an optional "q" parameter for | |||
| indicating a relative weight (Section 5.3.1), and then zero or more | indicating a relative weight (Section 5.3.1), and then zero or more | |||
| extension parameters. The "q" parameter is necessary if any | extension parameters. The "q" parameter is necessary if any | |||
| skipping to change at page 41, line 6 | skipping to change at page 40, line 50 | |||
| matches every charset that is not mentioned elsewhere in the Accept- | matches every charset that is not mentioned elsewhere in the Accept- | |||
| Charset field. If no "*" is present in an Accept-Charset field, then | Charset field. If no "*" is present in an Accept-Charset field, then | |||
| any charsets not explicitly mentioned in the field are considered | any charsets not explicitly mentioned in the field are considered | |||
| "not acceptable" to the client. | "not acceptable" to the client. | |||
| A request without any Accept-Charset header field implies that the | A request without any Accept-Charset header field implies that the | |||
| user agent will accept any charset in response. Most general-purpose | user agent will accept any charset in response. Most general-purpose | |||
| user agents do not send Accept-Charset, unless specifically | user agents do not send Accept-Charset, unless specifically | |||
| configured to do so, because a detailed list of supported charsets | configured to do so, because a detailed list of supported charsets | |||
| makes it easier for a server to identify an individual by virtue of | makes it easier for a server to identify an individual by virtue of | |||
| the user agent's request characteristics (Section 9.6). | the user agent's request characteristics (Section 9.7). | |||
| If an Accept-Charset header field is present in a request and none of | If an Accept-Charset header field is present in a request and none of | |||
| the available representations for the response has a charset that is | the available representations for the response has a charset that is | |||
| listed as acceptable, the origin server can either honor the header | listed as acceptable, the origin server can either honor the header | |||
| field, by sending a 406 (Not Acceptable) response, or disregard the | field, by sending a 406 (Not Acceptable) response, or disregard the | |||
| header field by treating the resource as if it is not subject to | header field by treating the resource as if it is not subject to | |||
| content negotiation. | content negotiation. | |||
| 5.3.4. Accept-Encoding | 5.3.4. Accept-Encoding | |||
| skipping to change at page 43, line 26 | skipping to change at page 43, line 22 | |||
| found in Section 2.3 of [RFC4647]. | found in Section 2.3 of [RFC4647]. | |||
| For matching, Section 3 of [RFC4647] defines several matching | For matching, Section 3 of [RFC4647] defines several matching | |||
| schemes. Implementations can offer the most appropriate matching | schemes. Implementations can offer the most appropriate matching | |||
| scheme for their requirements. The "Basic Filtering" scheme | scheme for their requirements. The "Basic Filtering" scheme | |||
| ([RFC4647], Section 3.3.1) is identical to the matching scheme that | ([RFC4647], Section 3.3.1) is identical to the matching scheme that | |||
| was previously defined for HTTP in Section 14.4 of [RFC2616]. | was previously defined for HTTP in Section 14.4 of [RFC2616]. | |||
| It might be contrary to the privacy expectations of the user to send | It might be contrary to the privacy expectations of the user to send | |||
| an Accept-Language header field with the complete linguistic | an Accept-Language header field with the complete linguistic | |||
| preferences of the user in every request (Section 9.6). | preferences of the user in every request (Section 9.7). | |||
| Since intelligibility is highly dependent on the individual user, | Since intelligibility is highly dependent on the individual user, | |||
| user agents need to allow user control over the linguistic | user agents need to allow user control over the linguistic preference | |||
| preference. A user agent that does not provide such control to the | (either through configuration of the user agent itself, or by | |||
| user MUST NOT send an Accept-Language header field. | defaulting to a user controllable system setting). A user agent that | |||
| does not provide such control to the user MUST NOT send an Accept- | ||||
| Language header field. | ||||
| Note: User agents ought to provide guidance to users when setting | Note: User agents ought to provide guidance to users when setting | |||
| a preference, since users are rarely familiar with the details of | a preference, since users are rarely familiar with the details of | |||
| language matching as described above. For example, users might | language matching as described above. For example, users might | |||
| assume that on selecting "en-gb", they will be served any kind of | assume that on selecting "en-gb", they will be served any kind of | |||
| English document if British English is not available. A user | English document if British English is not available. A user | |||
| agent might suggest, in such a case, to add "en" to the list for | agent might suggest, in such a case, to add "en" to the list for | |||
| better matching behavior. | better matching behavior. | |||
| 5.4. Authentication Credentials | 5.4. Authentication Credentials | |||
| Two header fields are used for carrying authentication credentials, | Two header fields are used for carrying authentication credentials, | |||
| as defined in [Part7]. Note that various custom mechanisms for user | as defined in [Part7]. Note that various custom mechanisms for user | |||
| authentication use the Cookie header field for this purpose, as | authentication use the Cookie header field for this purpose, as | |||
| defined in [RFC6265]. | defined in [RFC6265]. | |||
| +---------------------+------------------------+ | +---------------------+------------------------+ | |||
| | Header Field Name | Defined in... | | | Header Field Name | Defined in... | | |||
| +---------------------+------------------------+ | +---------------------+------------------------+ | |||
| | Authorization | Section 4.1 of [Part7] | | | Authorization | Section 4.2 of [Part7] | | |||
| | Proxy-Authorization | Section 4.3 of [Part7] | | | Proxy-Authorization | Section 4.4 of [Part7] | | |||
| +---------------------+------------------------+ | +---------------------+------------------------+ | |||
| 5.5. Request Context | 5.5. Request Context | |||
| The following request header fields provide additional information | The following request header fields provide additional information | |||
| about the request context, including information about the user, user | about the request context, including information about the user, user | |||
| agent, and resource behind the request. | agent, and resource behind the request. | |||
| +-------------------+---------------+ | +-------------------+---------------+ | |||
| | Header Field Name | Defined in... | | | Header Field Name | Defined in... | | |||
| skipping to change at page 45, line 43 | skipping to change at page 45, line 36 | |||
| The Referer field has the potential to reveal information about the | The Referer field has the potential to reveal information about the | |||
| request context or browsing history of the user, which is a privacy | request context or browsing history of the user, which is a privacy | |||
| concern if the referring resource's identifier reveals personal | concern if the referring resource's identifier reveals personal | |||
| information (such as an account name) or a resource that is supposed | information (such as an account name) or a resource that is supposed | |||
| to be confidential (such as behind a firewall or internal to a | to be confidential (such as behind a firewall or internal to a | |||
| secured service). Most general-purpose user agents do not send the | secured service). Most general-purpose user agents do not send the | |||
| Referer header field when the referring resource is a local "file" or | Referer header field when the referring resource is a local "file" or | |||
| "data" URI. A user agent MUST NOT send a Referer header field in an | "data" URI. A user agent MUST NOT send a Referer header field in an | |||
| unsecured HTTP request if the referring page was received with a | unsecured HTTP request if the referring page was received with a | |||
| secure protocol. See Section 9.3 for additional security | secure protocol. See Section 9.4 for additional security | |||
| considerations. | considerations. | |||
| Some intermediaries have been known to indiscriminately remove | Some intermediaries have been known to indiscriminately remove | |||
| Referer header fields from outgoing requests. This has the | Referer header fields from outgoing requests. This has the | |||
| unfortunate side-effect of interfering with protection against CSRF | unfortunate side-effect of interfering with protection against CSRF | |||
| attacks, which can be far more harmful to their users. | attacks, which can be far more harmful to their users. | |||
| Intermediaries and user agent extensions that wish to limit | Intermediaries and user agent extensions that wish to limit | |||
| information disclosure in Referer ought to restrict their changes to | information disclosure in Referer ought to restrict their changes to | |||
| specific edits, such as replacing internal domain names with | specific edits, such as replacing internal domain names with | |||
| pseudonyms or truncating the query and/or path components. An | pseudonyms or truncating the query and/or path components. An | |||
| skipping to change at page 51, line 19 | skipping to change at page 50, line 21 | |||
| switching to a real-time, synchronous protocol might be advantageous | switching to a real-time, synchronous protocol might be advantageous | |||
| when delivering resources that use such features. | when delivering resources that use such features. | |||
| 6.3. Successful 2xx | 6.3. Successful 2xx | |||
| The 2xx (Successful) class of status code indicates that the client's | The 2xx (Successful) class of status code indicates that the client's | |||
| request was successfully received, understood, and accepted. | request was successfully received, understood, and accepted. | |||
| 6.3.1. 200 OK | 6.3.1. 200 OK | |||
| The | The 200 (OK) status code indicates that the request has succeeded. | |||
| 200 (OK) status code indicates that the request has succeeded. The | The payload sent in a 200 response depends on the request method. | |||
| payload sent in a 200 response depends on the request method. For | For the methods defined by this specification, the intended meaning | |||
| the methods defined by this specification, the intended meaning of | of the payload can be summarized as: | |||
| the payload can be summarized as: | ||||
| GET a representation of the target resource; | GET a representation of the target resource; | |||
| HEAD the same representation as GET, but without the representation | HEAD the same representation as GET, but without the representation | |||
| data; | data; | |||
| POST a representation of the status of, or results obtained from, | POST a representation of the status of, or results obtained from, | |||
| the action; | the action; | |||
| PUT, DELETE a representation of the status of the action; | PUT, DELETE a representation of the status of the action; | |||
| skipping to change at page 55, line 42 | skipping to change at page 54, line 42 | |||
| If the server has a preferred choice, the server SHOULD generate a | If the server has a preferred choice, the server SHOULD generate a | |||
| Location header field containing a preferred choice's URI reference. | Location header field containing a preferred choice's URI reference. | |||
| The user agent MAY use the Location field value for automatic | The user agent MAY use the Location field value for automatic | |||
| redirection. | redirection. | |||
| For request methods other than HEAD, the server SHOULD generate a | For request methods other than HEAD, the server SHOULD generate a | |||
| payload in the 300 response containing a list of representation | payload in the 300 response containing a list of representation | |||
| metadata and URI reference(s) from which the user or user agent can | metadata and URI reference(s) from which the user or user agent can | |||
| choose the one most preferred. The user agent MAY make a selection | choose the one most preferred. The user agent MAY make a selection | |||
| from that list automatically, depending upon the list format, but | from that list automatically if it understands the provided media | |||
| this specification does not define a standard for such automatic | type. A specific format for automatic selection is not defined by | |||
| selection. | this specification because HTTP tries to remain orthogonal to the | |||
| definition of its payloads. In practice, the representation is | ||||
| provided in some easily parsed format believed to be acceptable to | ||||
| the user agent, as determined by shared design or content | ||||
| negotiation, or in some commonly accepted hypertext format. | ||||
| A 300 response is cacheable by default; i.e., unless otherwise | A 300 response is cacheable by default; i.e., unless otherwise | |||
| indicated by the method definition or explicit cache controls (see | indicated by the method definition or explicit cache controls (see | |||
| Section 4.2.2 of [Part6]). | Section 4.2.2 of [Part6]). | |||
| Note: The original proposal for 300 defined the URI header field | Note: The original proposal for 300 defined the URI header field | |||
| as providing a list of alternative representations, such that it | as providing a list of alternative representations, such that it | |||
| would be usable for 200, 300, and 406 responses and be transferred | would be usable for 200, 300, and 406 responses and be transferred | |||
| in responses to the HEAD method. However, lack of deployment and | in responses to the HEAD method. However, lack of deployment and | |||
| disagreement over syntax led to both URI and Alternates (a | disagreement over syntax led to both URI and Alternates (a | |||
| skipping to change at page 56, line 30 | skipping to change at page 55, line 31 | |||
| Clients with link editing capabilities ought to automatically re-link | Clients with link editing capabilities ought to automatically re-link | |||
| references to the effective request URI to one or more of the new | references to the effective request URI to one or more of the new | |||
| references sent by the server, where possible. | references sent by the server, where possible. | |||
| The server SHOULD generate a Location header field in the response | The server SHOULD generate a Location header field in the response | |||
| containing a preferred URI reference for the new permanent URI. The | containing a preferred URI reference for the new permanent URI. The | |||
| user agent MAY use the Location field value for automatic | user agent MAY use the Location field value for automatic | |||
| redirection. The server's response payload usually contains a short | redirection. The server's response payload usually contains a short | |||
| hypertext note with a hyperlink to the new URI(s). | hypertext note with a hyperlink to the new URI(s). | |||
| Note: For historic reasons, a user agent MAY change the request | Note: For historical reasons, a user agent MAY change the request | |||
| method from POST to GET for the subsequent request. If this | method from POST to GET for the subsequent request. If this | |||
| behavior is undesired, the 307 (Temporary Redirect) status code | behavior is undesired, the 307 (Temporary Redirect) status code | |||
| can be used instead. | can be used instead. | |||
| A 301 response is cacheable by default; i.e., unless otherwise | A 301 response is cacheable by default; i.e., unless otherwise | |||
| indicated by the method definition or explicit cache controls (see | indicated by the method definition or explicit cache controls (see | |||
| Section 4.2.2 of [Part6]). | Section 4.2.2 of [Part6]). | |||
| 6.4.3. 302 Found | 6.4.3. 302 Found | |||
| skipping to change at page 57, line 5 | skipping to change at page 56, line 5 | |||
| resides temporarily under a different URI. Since the redirection | resides temporarily under a different URI. Since the redirection | |||
| might be altered on occasion, the client ought to continue to use the | might be altered on occasion, the client ought to continue to use the | |||
| effective request URI for future requests. | effective request URI for future requests. | |||
| The server SHOULD generate a Location header field in the response | The server SHOULD generate a Location header field in the response | |||
| containing a URI reference for the different URI. The user agent MAY | containing a URI reference for the different URI. The user agent MAY | |||
| use the Location field value for automatic redirection. The server's | use the Location field value for automatic redirection. The server's | |||
| response payload usually contains a short hypertext note with a | response payload usually contains a short hypertext note with a | |||
| hyperlink to the different URI(s). | hyperlink to the different URI(s). | |||
| Note: For historic reasons, a user agent MAY change the request | Note: For historical reasons, a user agent MAY change the request | |||
| method from POST to GET for the subsequent request. If this | method from POST to GET for the subsequent request. If this | |||
| behavior is undesired, the 307 (Temporary Redirect) status code | behavior is undesired, the 307 (Temporary Redirect) status code | |||
| can be used instead. | can be used instead. | |||
| 6.4.4. 303 See Other | 6.4.4. 303 See Other | |||
| The 303 (See Other) status code indicates that the server is | The 303 (See Other) status code indicates that the server is | |||
| redirecting the user agent to a different resource, as indicated by a | redirecting the user agent to a different resource, as indicated by a | |||
| URI in the Location header field, that is intended to provide an | URI in the Location header field, which is intended to provide an | |||
| indirect response to the original request. In order to satisfy the | indirect response to the original request. A user agent can perform | |||
| original request, a user agent ought to perform a retrieval request | a retrieval request targeting that URI (a GET or HEAD request if | |||
| using the Location URI (a GET or HEAD request if using HTTP), which | using HTTP), which might also be redirected, and present the eventual | |||
| can itself be redirected further, and present the eventual result as | result as an answer to the original request. Note that the new URI | |||
| an answer to the original request. Note that the new URI in the | in the Location header field is not considered equivalent to the | |||
| Location header field is not considered equivalent to the effective | effective request URI. | |||
| request URI. | ||||
| This status code is applicable to any HTTP method. It is primarily | This status code is applicable to any HTTP method. It is primarily | |||
| used to allow the output of a POST action to redirect the user agent | used to allow the output of a POST action to redirect the user agent | |||
| to a selected resource, since doing so provides the information | to a selected resource, since doing so provides the information | |||
| corresponding to the POST response in a form that can be separately | corresponding to the POST response in a form that can be separately | |||
| identified, bookmarked, and cached independent of the original | identified, bookmarked, and cached independent of the original | |||
| request. | request. | |||
| A 303 response to a GET request indicates that the origin server does | A 303 response to a GET request indicates that the origin server does | |||
| not have a representation of the target resource that can be | not have a representation of the target resource that can be | |||
| skipping to change at page 66, line 6 | skipping to change at page 65, line 6 | |||
| Universal Time (UTC). The first two formats indicate UTC by the | Universal Time (UTC). The first two formats indicate UTC by the | |||
| three-letter abbreviation for Greenwich Mean Time, "GMT", a | three-letter abbreviation for Greenwich Mean Time, "GMT", a | |||
| predecessor of the UTC name; values in the asctime format are assumed | predecessor of the UTC name; values in the asctime format are assumed | |||
| to be in UTC. A sender that generates HTTP-date values from a local | to be in UTC. A sender that generates HTTP-date values from a local | |||
| clock ought to use NTP ([RFC5905]) or some similar protocol to | clock ought to use NTP ([RFC5905]) or some similar protocol to | |||
| synchronize its clock to UTC. | synchronize its clock to UTC. | |||
| Preferred format: | Preferred format: | |||
| IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT | IMF-fixdate = day-name "," SP date1 SP time-of-day SP GMT | |||
| ; fixed length/zone subset of the format defined in | ; fixed length/zone/capitalization subset of the format | |||
| ; Section 3.3 of [RFC5322] | ; defined in Section 3.3 of [RFC5322] | |||
| day-name = %x4D.6F.6E ; "Mon", case-sensitive | day-name = %x4D.6F.6E ; "Mon", case-sensitive | |||
| / %x54.75.65 ; "Tue", case-sensitive | / %x54.75.65 ; "Tue", case-sensitive | |||
| / %x57.65.64 ; "Wed", case-sensitive | / %x57.65.64 ; "Wed", case-sensitive | |||
| / %x54.68.75 ; "Thu", case-sensitive | / %x54.68.75 ; "Thu", case-sensitive | |||
| / %x46.72.69 ; "Fri", case-sensitive | / %x46.72.69 ; "Fri", case-sensitive | |||
| / %x53.61.74 ; "Sat", case-sensitive | / %x53.61.74 ; "Sat", case-sensitive | |||
| / %x53.75.6E ; "Sun", case-sensitive | / %x53.75.6E ; "Sun", case-sensitive | |||
| date1 = day SP month SP year | date1 = day SP month SP year | |||
| skipping to change at page 70, line 38 | skipping to change at page 69, line 38 | |||
| request target, might influence the origin server's process for | request target, might influence the origin server's process for | |||
| selecting and representing this response. The value consists of | selecting and representing this response. The value consists of | |||
| either a single asterisk ("*") or a list of header field names (case- | either a single asterisk ("*") or a list of header field names (case- | |||
| insensitive). | insensitive). | |||
| Vary = "*" / 1#field-name | Vary = "*" / 1#field-name | |||
| A Vary field value of "*" signals that anything about the request | A Vary field value of "*" signals that anything about the request | |||
| might play a role in selecting the response representation, possibly | might play a role in selecting the response representation, possibly | |||
| including elements outside the message syntax (e.g., the client's | including elements outside the message syntax (e.g., the client's | |||
| network address), and thus a recipient will not be able to determine | network address). A recipient will not be able to determine whether | |||
| whether this response is appropriate for a later request without | this response is appropriate for a later request without forwarding | |||
| forwarding the request to the origin server. A proxy MUST NOT | the request to the origin server. A proxy MUST NOT generate a Vary | |||
| generate a Vary field with a "*" value. | field with a "*" value. | |||
| A Vary field value consisting of a comma-separated list of names | A Vary field value consisting of a comma-separated list of names | |||
| indicates that the named request header fields, known as the | indicates that the named request header fields, known as the | |||
| selecting header fields, might have a role in selecting the | selecting header fields, might have a role in selecting the | |||
| representation. The potential selecting header fields are not | representation. The potential selecting header fields are not | |||
| limited to those defined by this specification. | limited to those defined by this specification. | |||
| For example, a response that contains | For example, a response that contains | |||
| Vary: accept-encoding, accept-language | Vary: accept-encoding, accept-language | |||
| skipping to change at page 71, line 34 | skipping to change at page 70, line 34 | |||
| representation might be sent in a subsequent request if | representation might be sent in a subsequent request if | |||
| additional parameters are provided in the listed header fields | additional parameters are provided in the listed header fields | |||
| (proactive negotiation). | (proactive negotiation). | |||
| An origin server SHOULD send a Vary header field when its algorithm | An origin server SHOULD send a Vary header field when its algorithm | |||
| for selecting a representation varies based on aspects of the request | for selecting a representation varies based on aspects of the request | |||
| message other than the method and request target, unless the variance | message other than the method and request target, unless the variance | |||
| cannot be crossed or the origin server has been deliberately | cannot be crossed or the origin server has been deliberately | |||
| configured to prevent cache transparency. For example, there is no | configured to prevent cache transparency. For example, there is no | |||
| need to send the Authorization field name in Vary because reuse | need to send the Authorization field name in Vary because reuse | |||
| across users is constrained by the field definition (Section 4.1 of | across users is constrained by the field definition (Section 4.2 of | |||
| [Part7]). Likewise, an origin server might use Cache-Control | [Part7]). Likewise, an origin server might use Cache-Control | |||
| directives (Section 5.2 of [Part6]) to supplant Vary if it considers | directives (Section 5.2 of [Part6]) to supplant Vary if it considers | |||
| the variance less significant than the performance cost of Vary's | the variance less significant than the performance cost of Vary's | |||
| impact on caching. | impact on caching. | |||
| 7.2. Validator Header Fields | 7.2. Validator Header Fields | |||
| Validator header fields convey metadata about the selected | Validator header fields convey metadata about the selected | |||
| representation (Section 3). In responses to safe requests, validator | representation (Section 3). In responses to safe requests, validator | |||
| fields describe the selected representation chosen by the origin | fields describe the selected representation chosen by the origin | |||
| skipping to change at page 72, line 25 | skipping to change at page 71, line 25 | |||
| +-------------------+------------------------+ | +-------------------+------------------------+ | |||
| 7.3. Authentication Challenges | 7.3. Authentication Challenges | |||
| Authentication challenges indicate what mechanisms are available for | Authentication challenges indicate what mechanisms are available for | |||
| the client to provide authentication credentials in future requests. | the client to provide authentication credentials in future requests. | |||
| +--------------------+------------------------+ | +--------------------+------------------------+ | |||
| | Header Field Name | Defined in... | | | Header Field Name | Defined in... | | |||
| +--------------------+------------------------+ | +--------------------+------------------------+ | |||
| | WWW-Authenticate | Section 4.4 of [Part7] | | | WWW-Authenticate | Section 4.1 of [Part7] | | |||
| | Proxy-Authenticate | Section 4.2 of [Part7] | | | Proxy-Authenticate | Section 4.3 of [Part7] | | |||
| +--------------------+------------------------+ | +--------------------+------------------------+ | |||
| 7.4. Response Context | 7.4. Response Context | |||
| The remaining response header fields provide more information about | The remaining response header fields provide more information about | |||
| the target resource for potential use in later requests. | the target resource for potential use in later requests. | |||
| +-------------------+------------------------+ | +-------------------+------------------------+ | |||
| | Header Field Name | Defined in... | | | Header Field Name | Defined in... | | |||
| +-------------------+------------------------+ | +-------------------+------------------------+ | |||
| skipping to change at page 78, line 32 | skipping to change at page 77, line 32 | |||
| New header field values typically have their syntax defined using | New header field values typically have their syntax defined using | |||
| ABNF ([RFC5234]), using the extension defined in Section 7 of [Part1] | ABNF ([RFC5234]), using the extension defined in Section 7 of [Part1] | |||
| as necessary, and are usually constrained to the range of ASCII | as necessary, and are usually constrained to the range of ASCII | |||
| characters. Header fields needing a greater range of characters can | characters. Header fields needing a greater range of characters can | |||
| use an encoding such as the one defined in [RFC5987]. | use an encoding such as the one defined in [RFC5987]. | |||
| Leading and trailing whitespace in raw field values is removed upon | Leading and trailing whitespace in raw field values is removed upon | |||
| field parsing (Section 3.2.4 of [Part1]). Field definitions where | field parsing (Section 3.2.4 of [Part1]). Field definitions where | |||
| leading or trailing whitespace in values is significant will have to | leading or trailing whitespace in values is significant will have to | |||
| use a container syntax such as quoted-string. | use a container syntax such as quoted-string (Section 3.2.6 of | |||
| [Part1]). | ||||
| Because commas (",") are used as a generic delimiter between field- | Because commas (",") are used as a generic delimiter between field- | |||
| values, they need to be treated with care if they are allowed in the | values, they need to be treated with care if they are allowed in the | |||
| field-value. Typically, components that might contain a comma are | field-value. Typically, components that might contain a comma are | |||
| protected with double-quotes using the quoted-string ABNF production | protected with double-quotes using the quoted-string ABNF production. | |||
| (Section 3.2.6 of [Part1]). | ||||
| For example, a textual date and a URI (either of which might contain | For example, a textual date and a URI (either of which might contain | |||
| a comma) could be safely carried in field-values like these: | a comma) could be safely carried in field-values like these: | |||
| Example-URI-Field: "http://example.com/a.html,foo", | Example-URI-Field: "http://example.com/a.html,foo", | |||
| "http://without-a-comma.example.com/" | "http://without-a-comma.example.com/" | |||
| Example-Date-Field: "Sat, 04 May 1996", "Wed, 14 Sep 2005" | Example-Date-Field: "Sat, 04 May 1996", "Wed, 14 Sep 2005" | |||
| Note that double-quote delimiters almost always are used with the | Note that double-quote delimiters almost always are used with the | |||
| quoted-string production; using a different syntax inside double- | quoted-string production; using a different syntax inside double- | |||
| skipping to change at page 80, line 10 | skipping to change at page 79, line 10 | |||
| o Whether it is appropriate to list the field-name in a Vary | o Whether it is appropriate to list the field-name in a Vary | |||
| response header field (e.g., when the request header field is used | response header field (e.g., when the request header field is used | |||
| by an origin server's content selection algorithm; see | by an origin server's content selection algorithm; see | |||
| Section 7.1.4). | Section 7.1.4). | |||
| o Whether the header field is useful or allowable in trailers (see | o Whether the header field is useful or allowable in trailers (see | |||
| Section 4.1 of [Part1]). | Section 4.1 of [Part1]). | |||
| o Whether the header field ought to be preserved across redirects. | o Whether the header field ought to be preserved across redirects. | |||
| o Whether it introduces any additional security considerations, such | ||||
| as disclosure of privacy-related data. | ||||
| 8.3.2. Registrations | 8.3.2. Registrations | |||
| The Message Header Field Registry shall be updated with the following | The Message Header Field Registry shall be updated with the following | |||
| permanent registrations: | permanent registrations: | |||
| +-------------------+----------+----------+-----------------+ | +-------------------+----------+----------+-----------------+ | |||
| | Header Field Name | Protocol | Status | Reference | | | Header Field Name | Protocol | Status | Reference | | |||
| +-------------------+----------+----------+-----------------+ | +-------------------+----------+----------+-----------------+ | |||
| | Accept | http | standard | Section 5.3.2 | | | Accept | http | standard | Section 5.3.2 | | |||
| | Accept-Charset | http | standard | Section 5.3.3 | | | Accept-Charset | http | standard | Section 5.3.3 | | |||
| skipping to change at page 81, line 35 | skipping to change at page 80, line 39 | |||
| +----------+----------------------------------------+---------------+ | +----------+----------------------------------------+---------------+ | |||
| | Name | Description | Reference | | | Name | Description | Reference | | |||
| +----------+----------------------------------------+---------------+ | +----------+----------------------------------------+---------------+ | |||
| | identity | Reserved (synonym for "no encoding" in | Section 5.3.4 | | | identity | Reserved (synonym for "no encoding" in | Section 5.3.4 | | |||
| | | Accept-Encoding) | | | | | Accept-Encoding) | | | |||
| +----------+----------------------------------------+---------------+ | +----------+----------------------------------------+---------------+ | |||
| 9. Security Considerations | 9. Security Considerations | |||
| This section is meant to inform developers, information providers, | This section is meant to inform developers, information providers, | |||
| and users of known security concerns relevant to HTTP/1.1 semantics | and users of known security concerns relevant to HTTP semantics and | |||
| and its use for transferring information over the Internet. | its use for transferring information over the Internet. | |||
| Considerations related to message syntax, parsing, and routing are | ||||
| discussed in Section 9 of [Part1]. | ||||
| The list of considerations below is not exhaustive. Most security | ||||
| concerns related to HTTP semantics are about securing server-side | ||||
| applications (code behind the HTTP interface), securing user agent | ||||
| processing of payloads received via HTTP, or secure use of the | ||||
| Internet in general, rather than security of the protocol. Various | ||||
| organizations maintain topical information and links to current | ||||
| research on Web application security (e.g., [OWASP]). | ||||
| 9.1. Attacks Based On File and Path Names | 9.1. Attacks Based On File and Path Names | |||
| Origin servers frequently make use of their local file system to | Origin servers frequently make use of their local file system to | |||
| manage the mapping from effective request URI to resource | manage the mapping from effective request URI to resource | |||
| representations. Implementers need to be aware that most file | representations. Implementers need to be aware that most file | |||
| systems are not designed to protect against malicious file or path | systems are not designed to protect against malicious file or path | |||
| names, and thus depend on the origin server to avoid mapping to file | names, and thus depend on the origin server to avoid mapping to file | |||
| names, folders, or directories that have special significance to the | names, folders, or directories that have special significance to the | |||
| system. | system. | |||
| skipping to change at page 82, line 14 | skipping to change at page 81, line 30 | |||
| an annoying tendency to prefer user-friendliness over security when | an annoying tendency to prefer user-friendliness over security when | |||
| handling invalid or unexpected characters, recomposition of | handling invalid or unexpected characters, recomposition of | |||
| decomposed characters, and case-normalization of case-insensitive | decomposed characters, and case-normalization of case-insensitive | |||
| names. | names. | |||
| Attacks based on such special names tend to focus on either denial of | Attacks based on such special names tend to focus on either denial of | |||
| service (e.g., telling the server to read from a COM port) or | service (e.g., telling the server to read from a COM port) or | |||
| disclosure of configuration and source files that are not meant to be | disclosure of configuration and source files that are not meant to be | |||
| served. | served. | |||
| 9.2. Personal Information | 9.2. Attacks Based On Command, Code, or Query Injection | |||
| Origin servers often use parameters within the URI as a means of | ||||
| identifying system services, selecting database entries, or choosing | ||||
| a data source. However, data received in a request cannot be | ||||
| trusted. An attacker could construct any of the request data | ||||
| elements (method, request-target, header fields, or body) to contain | ||||
| data that might be misinterpreted as a command, code, or query when | ||||
| passed through a command invocation, language interpreter, or | ||||
| database interface. | ||||
| For example, SQL injection is a common attack wherein additional | ||||
| query language is inserted within some part of the request-target or | ||||
| header fields (e.g., Host, Referer, etc.). If the received data is | ||||
| used directly within a SELECT statement, the query language might be | ||||
| interpreted as a database command instead of a simple string value. | ||||
| This type of implementation vulnerability is extremely common, in | ||||
| spite of being easy to prevent. | ||||
| In general, resource implementations ought to avoid use of request | ||||
| data in contexts that are processed or interpreted as instructions. | ||||
| Parameters ought to be compared to fixed strings and acted upon as a | ||||
| result of that comparison, rather than passed through an interface | ||||
| that is not prepared for untrusted data. Received data that isn't | ||||
| based on fixed parameters ought to be carefully filtered or encoded | ||||
| to avoid being misinterpreted. | ||||
| Similar considerations apply to request data when it is stored and | ||||
| later processed, such as within log files, monitoring tools, or when | ||||
| included within a data format that allows embedded scripts. | ||||
| 9.3. Disclosure of Personal Information | ||||
| Clients are often privy to large amounts of personal information, | Clients are often privy to large amounts of personal information, | |||
| including both information provided by the user to interact with | including both information provided by the user to interact with | |||
| resources (e.g., the user's name, location, mail address, passwords, | resources (e.g., the user's name, location, mail address, passwords, | |||
| encryption keys, etc.) and information about the user's browsing | encryption keys, etc.) and information about the user's browsing | |||
| activity over time (e.g., history, bookmarks, etc.). Implementations | activity over time (e.g., history, bookmarks, etc.). Implementations | |||
| need to prevent unintentional leakage of personal information. | need to prevent unintentional disclosure of personal information. | |||
| 9.3. Sensitive Information in URIs | 9.4. Disclosure of Sensitive Information in URIs | |||
| URIs are intended to be shared, not secured, even when they identify | URIs are intended to be shared, not secured, even when they identify | |||
| secure resources. URIs are often shown on displays, added to | secure resources. URIs are often shown on displays, added to | |||
| templates when a page is printed, and stored in a variety of | templates when a page is printed, and stored in a variety of | |||
| unprotected bookmark lists. It is therefore unwise to include | unprotected bookmark lists. It is therefore unwise to include | |||
| information within a URI that is sensitive, personally identifiable, | information within a URI that is sensitive, personally identifiable, | |||
| or a risk to disclose. | or a risk to disclose. | |||
| Authors of services ought to avoid GET-based forms for the submission | Authors of services ought to avoid GET-based forms for the submission | |||
| of sensitive data because that data will be placed in the request- | of sensitive data because that data will be placed in the request- | |||
| skipping to change at page 82, line 46 | skipping to change at page 82, line 44 | |||
| third parties. Such services ought to use POST-based form submission | third parties. Such services ought to use POST-based form submission | |||
| instead. | instead. | |||
| Since the Referer header field tells a target site about the context | Since the Referer header field tells a target site about the context | |||
| that resulted in a request, it has the potential to reveal | that resulted in a request, it has the potential to reveal | |||
| information about the user's immediate browsing history and any | information about the user's immediate browsing history and any | |||
| personal information that might be found in the referring resource's | personal information that might be found in the referring resource's | |||
| URI. Limitations on Referer are described in Section 5.5.2 to | URI. Limitations on Referer are described in Section 5.5.2 to | |||
| address some of its security considerations. | address some of its security considerations. | |||
| 9.4. Product Information | 9.5. Disclosure of Fragment after Redirects | |||
| Although fragment identifiers used within URI references are not sent | ||||
| in requests, implementers ought to be aware that they will be visible | ||||
| to the user agent and any extensions or scripts running as a result | ||||
| of the response. In particular, when a redirect occurs and the | ||||
| original request's fragment identifier is inherited by the new | ||||
| reference in Location (Section 7.1.2), this might have the effect of | ||||
| disclosing one site's fragment to another site. If the first site | ||||
| uses personal information in fragments, it ought to ensure that | ||||
| redirects to other sites include a (possibly empty) fragment | ||||
| component in order to block that inheritance. | ||||
| 9.6. Disclosure of Product Information | ||||
| The User-Agent (Section 5.5.3), Via (Section 5.7.1 of [Part1]), and | The User-Agent (Section 5.5.3), Via (Section 5.7.1 of [Part1]), and | |||
| Server (Section 7.4.2) header fields often reveal information about | Server (Section 7.4.2) header fields often reveal information about | |||
| the respective sender's software systems. In theory, this can make | the respective sender's software systems. In theory, this can make | |||
| it easier for an attacker to exploit known security holes; in | it easier for an attacker to exploit known security holes; in | |||
| practice, attackers tend to try all potential holes regardless of the | practice, attackers tend to try all potential holes regardless of the | |||
| apparent software versions being used. | apparent software versions being used. | |||
| Proxies that serve as a portal through a network firewall ought to | Proxies that serve as a portal through a network firewall ought to | |||
| take special precautions regarding the transfer of header information | take special precautions regarding the transfer of header information | |||
| that might identify hosts behind the firewall. The Via header field | that might identify hosts behind the firewall. The Via header field | |||
| allows intermediaries to replace sensitive machine names with | allows intermediaries to replace sensitive machine names with | |||
| pseudonyms. | pseudonyms. | |||
| 9.5. Fragment after Redirects | 9.7. Browser Fingerprinting | |||
| Although fragment identifiers used within URI references are not sent | ||||
| in requests, implementers ought to be aware that they will be visible | ||||
| to the user agent and any extensions or scripts running as a result | ||||
| of the response. In particular, when a redirect occurs and the | ||||
| original request's fragment identifier is inherited by the new | ||||
| reference in Location (Section 7.1.2), this might have the effect of | ||||
| leaking one site's fragment to another site. If the first site uses | ||||
| personal information in fragments, it ought to ensure that redirects | ||||
| to other sites include a (possibly empty) fragment component in order | ||||
| to block that inheritance. | ||||
| 9.6. Browser Fingerprinting | ||||
| Browser fingerprinting is a set of techniques for identifying a | Browser fingerprinting is a set of techniques for identifying a | |||
| specific user agent over time through its unique set of | specific user agent over time through its unique set of | |||
| characteristics. These characteristics might include information | characteristics. These characteristics might include information | |||
| related to its TCP behavior, feature capabilities, and scripting | related to its TCP behavior, feature capabilities, and scripting | |||
| environment, though of particular interest here is the set of unique | environment, though of particular interest here is the set of unique | |||
| characteristics that might be communicated via HTTP. Fingerprinting | characteristics that might be communicated via HTTP. Fingerprinting | |||
| is considered a privacy concern because it enables tracking of a user | is considered a privacy concern because it enables tracking of a user | |||
| agent's behavior over time without the corresponding controls that | agent's behavior over time without the corresponding controls that | |||
| the user might have over other forms of data collection (e.g., | the user might have over other forms of data collection (e.g., | |||
| cookies). Many general-purpose user agents (i.e., Web browsers) have | cookies). Many general-purpose user agents (i.e., Web browsers) have | |||
| taken steps to reduce their fingerprints. | taken steps to reduce their fingerprints. | |||
| There are a number of request header fields that might reveal | There are a number of request header fields that might reveal | |||
| information to servers that is sufficiently unique to enable | information to servers that is sufficiently unique to enable | |||
| fingerprinting. The From header field is the most obvious, though it | fingerprinting. The From header field is the most obvious, though it | |||
| is expected that From will only be sent when self-identification is | is expected that From will only be sent when self-identification is | |||
| desired by the user. Likewise, Cookie header fields are deliberately | desired by the user. Likewise, Cookie header fields are deliberately | |||
| designed to enable re-identification, so we can assume that | designed to enable re-identification, so fingerprinting concerns only | |||
| fingerprinting concerns only apply to situations where cookies are | apply to situations where cookies are disabled or restricted by the | |||
| disabled or restricted by the user agent's configuration. | user agent's configuration. | |||
| The User-Agent header field might contain enough information to | The User-Agent header field might contain enough information to | |||
| uniquely identify a specific device, usually when combined with other | uniquely identify a specific device, usually when combined with other | |||
| characteristics, particularly if the user agent sends excessive | characteristics, particularly if the user agent sends excessive | |||
| details about the user's system or extensions. However, the source | details about the user's system or extensions. However, the source | |||
| of unique information that is least expected by users is proactive | of unique information that is least expected by users is proactive | |||
| negotiation (Section 5.3), including the Accept, Accept-Charset, | negotiation (Section 5.3), including the Accept, Accept-Charset, | |||
| Accept-Encoding, and Accept-Language header fields. | Accept-Encoding, and Accept-Language header fields. | |||
| In addition to the fingerprinting concern, detailed use of the | In addition to the fingerprinting concern, detailed use of the | |||
| Accept-Language header field can reveal information the user might | Accept-Language header field can reveal information the user might | |||
| consider to be of a private nature, because the understanding of | consider to be of a private nature. For example, understanding a | |||
| particular languages is often strongly correlated to membership in a | given language set might be strongly correlated to membership in a | |||
| particular ethnic group. An approach that limits such loss of | particular ethnic group. An approach that limits such loss of | |||
| privacy would be for a user agent to omit the sending of Accept- | privacy would be for a user agent to omit the sending of Accept- | |||
| Language except for sites that have been whitelisted, perhaps via | Language except for sites that have been whitelisted, perhaps via | |||
| interaction after detecting a Vary header field that would indicate | interaction after detecting a Vary header field that indicates | |||
| language negotiation might be useful. | language negotiation might be useful. | |||
| In environments where proxies are used to enhance privacy, user | In environments where proxies are used to enhance privacy, user | |||
| agents ought to be conservative in sending proactive negotiation | agents ought to be conservative in sending proactive negotiation | |||
| header fields. General-purpose user agents that provide a high | header fields. General-purpose user agents that provide a high | |||
| degree of header field configurability ought to inform users about | degree of header field configurability ought to inform users about | |||
| the loss of privacy that might result if too much detail is provided. | the loss of privacy that might result if too much detail is provided. | |||
| As an extreme privacy measure, proxies could filter the proactive | As an extreme privacy measure, proxies could filter the proactive | |||
| negotiation header fields in relayed requests. | negotiation header fields in relayed requests. | |||
| 10. Acknowledgments | 10. Acknowledgments | |||
| See Section 10 of [Part1]. | See Section 10 of [Part1]. | |||
| 11. References | 11. References | |||
| 11.1. Normative References | 11.1. Normative References | |||
| [Part1] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext | [Part1] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext | |||
| Transfer Protocol (HTTP/1.1): Message Syntax and | Transfer Protocol (HTTP/1.1): Message Syntax and | |||
| Routing", draft-ietf-httpbis-p1-messaging-25 (work in | Routing", draft-ietf-httpbis-p1-messaging-26 (work in | |||
| progress), November 2013. | progress), February 2014. | |||
| [Part4] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext | [Part4] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext | |||
| Transfer Protocol (HTTP/1.1): Conditional Requests", | Transfer Protocol (HTTP/1.1): Conditional Requests", | |||
| draft-ietf-httpbis-p4-conditional-25 (work in | draft-ietf-httpbis-p4-conditional-26 (work in | |||
| progress), November 2013. | progress), February 2014. | |||
| [Part5] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., | [Part5] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., | |||
| "Hypertext Transfer Protocol (HTTP/1.1): Range | "Hypertext Transfer Protocol (HTTP/1.1): Range | |||
| Requests", draft-ietf-httpbis-p5-range-25 (work in | Requests", draft-ietf-httpbis-p5-range-26 (work in | |||
| progress), November 2013. | progress), February 2014. | |||
| [Part6] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [Part6] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | Ed., "Hypertext Transfer Protocol (HTTP/1.1): Caching", | |||
| draft-ietf-httpbis-p6-cache-25 (work in progress), | draft-ietf-httpbis-p6-cache-26 (work in progress), | |||
| November 2013. | February 2014. | |||
| [Part7] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext | [Part7] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext | |||
| Transfer Protocol (HTTP/1.1): Authentication", | Transfer Protocol (HTTP/1.1): Authentication", | |||
| draft-ietf-httpbis-p7-auth-25 (work in progress), | draft-ietf-httpbis-p7-auth-26 (work in progress), | |||
| November 2013. | February 2014. | |||
| [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet | [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet | |||
| Mail Extensions (MIME) Part One: Format of Internet | Mail Extensions (MIME) Part One: Format of Internet | |||
| Message Bodies", RFC 2045, November 1996. | Message Bodies", RFC 2045, November 1996. | |||
| [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet | |||
| Mail Extensions (MIME) Part Two: Media Types", | Mail Extensions (MIME) Part Two: Media Types", | |||
| RFC 2046, November 1996. | RFC 2046, November 1996. | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| skipping to change at page 86, line 9 | skipping to change at page 86, line 5 | |||
| RFC 6838, January 2013. | RFC 6838, January 2013. | |||
| [BCP178] Saint-Andre, P., Crocker, D., and M. Nottingham, | [BCP178] Saint-Andre, P., Crocker, D., and M. Nottingham, | |||
| "Deprecating the "X-" Prefix and Similar Constructs in | "Deprecating the "X-" Prefix and Similar Constructs in | |||
| Application Protocols", BCP 178, RFC 6648, June 2012. | Application Protocols", BCP 178, RFC 6648, June 2012. | |||
| [BCP90] Klyne, G., Nottingham, M., and J. Mogul, "Registration | [BCP90] Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
| Procedures for Message Header Fields", BCP 90, | Procedures for Message Header Fields", BCP 90, | |||
| RFC 3864, September 2004. | RFC 3864, September 2004. | |||
| [OWASP] van der Stock, A., Ed., "A Guide to Building Secure Web | ||||
| Applications and Web Services", The Open Web | ||||
| Application Security Project (OWASP) 2.0.1, July 2005, | ||||
| <https://www.owasp.org/>. | ||||
| [REST] Fielding, R., "Architectural Styles and the Design of | [REST] Fielding, R., "Architectural Styles and the Design of | |||
| Network-based Software Architectures", Doctoral | Network-based Software Architectures", | |||
| Dissertation, University of California, Irvine , | Doctoral Dissertation, University of California, | |||
| September 2000, | Irvine, September 2000, | |||
| <http://roy.gbiv.com/pubs/dissertation/top.htm>. | <http://roy.gbiv.com/pubs/dissertation/top.htm>. | |||
| [RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, | [RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, | |||
| "Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, | "Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, | |||
| May 1996. | May 1996. | |||
| [RFC2049] Freed, N. and N. Borenstein, "Multipurpose Internet | [RFC2049] Freed, N. and N. Borenstein, "Multipurpose Internet | |||
| Mail Extensions (MIME) Part Five: Conformance Criteria | Mail Extensions (MIME) Part Five: Conformance Criteria | |||
| and Examples", RFC 2049, November 1996. | and Examples", RFC 2049, November 1996. | |||
| skipping to change at page 87, line 5 | skipping to change at page 87, line 6 | |||
| [RFC2817] Khare, R. and S. Lawrence, "Upgrading to TLS Within | [RFC2817] Khare, R. and S. Lawrence, "Upgrading to TLS Within | |||
| HTTP/1.1", RFC 2817, May 2000. | HTTP/1.1", RFC 2817, May 2000. | |||
| [RFC2978] Freed, N. and J. Postel, "IANA Charset Registration | [RFC2978] Freed, N. and J. Postel, "IANA Charset Registration | |||
| Procedures", BCP 19, RFC 2978, October 2000. | Procedures", BCP 19, RFC 2978, October 2000. | |||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing | |||
| an IANA Considerations Section in RFCs", BCP 26, | an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 5226, May 2008. | RFC 5226, May 2008. | |||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer | ||||
| Security (TLS) Protocol Version 1.2", RFC 5246, | ||||
| August 2008. | ||||
| [RFC5322] Resnick, P., "Internet Message Format", RFC 5322, | [RFC5322] Resnick, P., "Internet Message Format", RFC 5322, | |||
| October 2008. | October 2008. | |||
| [RFC5789] Dusseault, L. and J. Snell, "PATCH Method for HTTP", | [RFC5789] Dusseault, L. and J. Snell, "PATCH Method for HTTP", | |||
| RFC 5789, March 2010. | RFC 5789, March 2010. | |||
| [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | |||
| "Network Time Protocol Version 4: Protocol and | "Network Time Protocol Version 4: Protocol and | |||
| Algorithms Specification", RFC 5905, June 2010. | Algorithms Specification", RFC 5905, June 2010. | |||
| skipping to change at page 92, line 33 | skipping to change at page 92, line 38 | |||
| BWS = <BWS, defined in [Part1], Section 3.2.3> | BWS = <BWS, defined in [Part1], Section 3.2.3> | |||
| OWS = <OWS, defined in [Part1], Section 3.2.3> | OWS = <OWS, defined in [Part1], Section 3.2.3> | |||
| RWS = <RWS, defined in [Part1], Section 3.2.3> | RWS = <RWS, defined in [Part1], Section 3.2.3> | |||
| URI-reference = <URI-reference, defined in [Part1], Section 2.7> | URI-reference = <URI-reference, defined in [Part1], Section 2.7> | |||
| absolute-URI = <absolute-URI, defined in [Part1], Section 2.7> | absolute-URI = <absolute-URI, defined in [Part1], Section 2.7> | |||
| comment = <comment, defined in [Part1], Section 3.2.6> | comment = <comment, defined in [Part1], Section 3.2.6> | |||
| field-name = <comment, defined in [Part1], Section 3.2> | field-name = <comment, defined in [Part1], Section 3.2> | |||
| partial-URI = <partial-URI, defined in [Part1], Section 2.7> | partial-URI = <partial-URI, defined in [Part1], Section 2.7> | |||
| quoted-string = <quoted-string, defined in [Part1], Section 3.2.6> | quoted-string = <quoted-string, defined in [Part1], Section 3.2.6> | |||
| token = <token, defined in [Part1], Section 3.2.6> | token = <token, defined in [Part1], Section 3.2.6> | |||
| word = <word, defined in [Part1], Section 3.2.6> | ||||
| Appendix D. Collected ABNF | Appendix D. Collected ABNF | |||
| In the collected ABNF below, list rules are expanded as per Section | In the collected ABNF below, list rules are expanded as per Section | |||
| 1.2 of [Part1]. | 1.2 of [Part1]. | |||
| Accept = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [ | Accept = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [ | |||
| OWS ( media-range [ accept-params ] ) ] ) ] | OWS ( media-range [ accept-params ] ) ] ) ] | |||
| Accept-Charset = *( "," OWS ) ( ( charset / "*" ) [ weight ] ) *( OWS | Accept-Charset = *( "," OWS ) ( ( charset / "*" ) [ weight ] ) *( OWS | |||
| "," [ OWS ( ( charset / "*" ) [ weight ] ) ] ) | "," [ OWS ( ( charset / "*" ) [ weight ] ) ] ) | |||
| skipping to change at page 93, line 42 | skipping to change at page 93, line 47 | |||
| Server = product *( RWS ( product / comment ) ) | Server = product *( RWS ( product / comment ) ) | |||
| URI-reference = <URI-reference, defined in [Part1], Section 2.7> | URI-reference = <URI-reference, defined in [Part1], Section 2.7> | |||
| User-Agent = product *( RWS ( product / comment ) ) | User-Agent = product *( RWS ( product / comment ) ) | |||
| Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ] | Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ] | |||
| ) ) | ) ) | |||
| absolute-URI = <absolute-URI, defined in [Part1], Section 2.7> | absolute-URI = <absolute-URI, defined in [Part1], Section 2.7> | |||
| accept-ext = OWS ";" OWS token [ "=" word ] | accept-ext = OWS ";" OWS token [ "=" ( token / quoted-string ) ] | |||
| accept-params = weight *accept-ext | accept-params = weight *accept-ext | |||
| asctime-date = day-name SP date3 SP time-of-day SP year | asctime-date = day-name SP date3 SP time-of-day SP year | |||
| attribute = token | ||||
| charset = token | charset = token | |||
| codings = content-coding / "identity" / "*" | codings = content-coding / "identity" / "*" | |||
| comment = <comment, defined in [Part1], Section 3.2.6> | comment = <comment, defined in [Part1], Section 3.2.6> | |||
| content-coding = token | content-coding = token | |||
| date1 = day SP month SP year | date1 = day SP month SP year | |||
| date2 = day "-" month "-" 2DIGIT | date2 = day "-" month "-" 2DIGIT | |||
| date3 = month SP ( 2DIGIT / ( SP DIGIT ) ) | date3 = month SP ( 2DIGIT / ( SP DIGIT ) ) | |||
| day = 2DIGIT | day = 2DIGIT | |||
| day-name = %x4D.6F.6E ; Mon | day-name = %x4D.6F.6E ; Mon | |||
| / %x54.75.65 ; Tue | / %x54.75.65 ; Tue | |||
| / %x57.65.64 ; Wed | / %x57.65.64 ; Wed | |||
| / %x54.68.75 ; Thu | / %x54.68.75 ; Thu | |||
| / %x46.72.69 ; Fri | / %x46.72.69 ; Fri | |||
| / %x53.61.74 ; Sat | / %x53.61.74 ; Sat | |||
| skipping to change at page 95, line 4 | skipping to change at page 95, line 6 | |||
| / %x4D.61.79 ; May | / %x4D.61.79 ; May | |||
| / %x4A.75.6E ; Jun | / %x4A.75.6E ; Jun | |||
| / %x4A.75.6C ; Jul | / %x4A.75.6C ; Jul | |||
| / %x41.75.67 ; Aug | / %x41.75.67 ; Aug | |||
| / %x53.65.70 ; Sep | / %x53.65.70 ; Sep | |||
| / %x4F.63.74 ; Oct | / %x4F.63.74 ; Oct | |||
| / %x4E.6F.76 ; Nov | / %x4E.6F.76 ; Nov | |||
| / %x44.65.63 ; Dec | / %x44.65.63 ; Dec | |||
| obs-date = rfc850-date / asctime-date | obs-date = rfc850-date / asctime-date | |||
| parameter = attribute "=" value | ||||
| parameter = token "=" ( token / quoted-string ) | ||||
| partial-URI = <partial-URI, defined in [Part1], Section 2.7> | partial-URI = <partial-URI, defined in [Part1], Section 2.7> | |||
| product = token [ "/" product-version ] | product = token [ "/" product-version ] | |||
| product-version = token | product-version = token | |||
| quoted-string = <quoted-string, defined in [Part1], Section 3.2.6> | quoted-string = <quoted-string, defined in [Part1], Section 3.2.6> | |||
| qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] ) | qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] ) | |||
| rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT | rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT | |||
| second = 2DIGIT | second = 2DIGIT | |||
| subtype = token | subtype = token | |||
| time-of-day = hour ":" minute ":" second | time-of-day = hour ":" minute ":" second | |||
| token = <token, defined in [Part1], Section 3.2.6> | token = <token, defined in [Part1], Section 3.2.6> | |||
| type = token | type = token | |||
| value = word | ||||
| weight = OWS ";" OWS "q=" qvalue | weight = OWS ";" OWS "q=" qvalue | |||
| word = <word, defined in [Part1], Section 3.2.6> | ||||
| year = 4DIGIT | year = 4DIGIT | |||
| Appendix E. Change Log (to be removed by RFC Editor before publication) | Appendix E. Change Log (to be removed by RFC Editor before publication) | |||
| E.1. Since RFC 2616 | E.1. Since RFC 2616 | |||
| Changes up to the IETF Last Call draft are summarized in <http:// | Changes up to the IETF Last Call draft are summarized in <http:// | |||
| trac.tools.ietf.org/html/ | trac.tools.ietf.org/html/ | |||
| draft-ietf-httpbis-p2-semantics-24#appendix-E>. | draft-ietf-httpbis-p2-semantics-24#appendix-E>. | |||
| skipping to change at page 96, line 8 | skipping to change at page 96, line 8 | |||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/501>: "idempotency: | o <http://tools.ietf.org/wg/httpbis/trac/ticket/501>: "idempotency: | |||
| clarify 'effect'" | clarify 'effect'" | |||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/503>: "APPSDIR | o <http://tools.ietf.org/wg/httpbis/trac/ticket/503>: "APPSDIR | |||
| review of draft-ietf-httpbis-p2-semantics-24" | review of draft-ietf-httpbis-p2-semantics-24" | |||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/517>: "move IANA | o <http://tools.ietf.org/wg/httpbis/trac/ticket/517>: "move IANA | |||
| registrations to correct draft" | registrations to correct draft" | |||
| E.3. Since draft-ietf-httpbis-p2-semantics-25 | ||||
| Closed issues: | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/520>: "Gen-Art | ||||
| review of draft-ietf-httpbis-p2-semantics-24 with security | ||||
| considerations" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/532>: "IESG ballot | ||||
| on draft-ietf-httpbis-p2-semantics-25" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/538>: "add | ||||
| 'stateless' to Abstract" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/542>: "improve | ||||
| introduction of list rule" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/545>: "requirement | ||||
| on implementing methods according to their semantics" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/546>: | ||||
| "considerations for new headers: privacy" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/549>: "augment | ||||
| security considerations with pointers to current research" | ||||
| Index | Index | |||
| 1 | 1 | |||
| 1xx Informational (status code class) 50 | 1xx Informational (status code class) 49 | |||
| 2 | 2 | |||
| 2xx Successful (status code class) 51 | 2xx Successful (status code class) 50 | |||
| 3 | 3 | |||
| 3xx Redirection (status code class) 54 | 3xx Redirection (status code class) 53 | |||
| 4 | 4 | |||
| 4xx Client Error (status code class) 58 | 4xx Client Error (status code class) 57 | |||
| 5 | 5 | |||
| 5xx Server Error (status code class) 62 | 5xx Server Error (status code class) 61 | |||
| 1 | 1 | |||
| 100 Continue (status code) 50 | 100 Continue (status code) 49 | |||
| 100-continue (expect value) 34 | 100-continue (expect value) 33 | |||
| 101 Switching Protocols (status code) 50 | 101 Switching Protocols (status code) 49 | |||
| 2 | 2 | |||
| 200 OK (status code) 51 | 200 OK (status code) 50 | |||
| 201 Created (status code) 52 | 201 Created (status code) 51 | |||
| 202 Accepted (status code) 52 | 202 Accepted (status code) 51 | |||
| 203 Non-Authoritative Information (status code) 52 | 203 Non-Authoritative Information (status code) 51 | |||
| 204 No Content (status code) 53 | 204 No Content (status code) 52 | |||
| 205 Reset Content (status code) 53 | 205 Reset Content (status code) 52 | |||
| 3 | 3 | |||
| 300 Multiple Choices (status code) 55 | 300 Multiple Choices (status code) 54 | |||
| 301 Moved Permanently (status code) 56 | 301 Moved Permanently (status code) 55 | |||
| 302 Found (status code) 56 | 302 Found (status code) 55 | |||
| 303 See Other (status code) 57 | 303 See Other (status code) 56 | |||
| 305 Use Proxy (status code) 57 | 305 Use Proxy (status code) 56 | |||
| 306 (Unused) (status code) 58 | 306 (Unused) (status code) 56 | |||
| 307 Temporary Redirect (status code) 58 | 307 Temporary Redirect (status code) 57 | |||
| 4 | 4 | |||
| 400 Bad Request (status code) 58 | 400 Bad Request (status code) 57 | |||
| 402 Payment Required (status code) 58 | 402 Payment Required (status code) 57 | |||
| 403 Forbidden (status code) 59 | 403 Forbidden (status code) 57 | |||
| 404 Not Found (status code) 59 | 404 Not Found (status code) 58 | |||
| 405 Method Not Allowed (status code) 59 | 405 Method Not Allowed (status code) 58 | |||
| 406 Not Acceptable (status code) 59 | 406 Not Acceptable (status code) 58 | |||
| 408 Request Timeout (status code) 60 | 408 Request Timeout (status code) 59 | |||
| 409 Conflict (status code) 60 | 409 Conflict (status code) 59 | |||
| 410 Gone (status code) 60 | 410 Gone (status code) 59 | |||
| 411 Length Required (status code) 61 | 411 Length Required (status code) 60 | |||
| 413 Payload Too Large (status code) 61 | 413 Payload Too Large (status code) 60 | |||
| 414 URI Too Long (status code) 61 | 414 URI Too Long (status code) 60 | |||
| 415 Unsupported Media Type (status code) 62 | 415 Unsupported Media Type (status code) 60 | |||
| 417 Expectation Failed (status code) 62 | 417 Expectation Failed (status code) 61 | |||
| 426 Upgrade Required (status code) 62 | 426 Upgrade Required (status code) 61 | |||
| 5 | 5 | |||
| 500 Internal Server Error (status code) 63 | 500 Internal Server Error (status code) 61 | |||
| 501 Not Implemented (status code) 63 | 501 Not Implemented (status code) 62 | |||
| 502 Bad Gateway (status code) 63 | 502 Bad Gateway (status code) 62 | |||
| 503 Service Unavailable (status code) 63 | 503 Service Unavailable (status code) 62 | |||
| 504 Gateway Timeout (status code) 63 | 504 Gateway Timeout (status code) 62 | |||
| 505 HTTP Version Not Supported (status code) 63 | 505 HTTP Version Not Supported (status code) 62 | |||
| A | A | |||
| Accept header field 38 | Accept header field 38 | |||
| Accept-Charset header field 40 | Accept-Charset header field 40 | |||
| Accept-Encoding header field 41 | Accept-Encoding header field 41 | |||
| Accept-Language header field 42 | Accept-Language header field 42 | |||
| Allow header field 72 | Allow header field 71 | |||
| C | C | |||
| cacheable 24 | cacheable 24 | |||
| compress (content coding) 11 | compress (content coding) 11 | |||
| conditional request 36 | conditional request 36 | |||
| CONNECT method 30 | CONNECT method 30 | |||
| content coding 11 | content coding 11 | |||
| content negotiation 6 | content negotiation 6 | |||
| Content-Encoding header field 12 | Content-Encoding header field 12 | |||
| Content-Language header field 13 | Content-Language header field 13 | |||
| Content-Location header field 15 | Content-Location header field 15 | |||
| Content-Transfer-Encoding header field 89 | Content-Transfer-Encoding header field 89 | |||
| Content-Type header field 10 | Content-Type header field 10 | |||
| D | D | |||
| Date header field 67 | Date header field 66 | |||
| deflate (content coding) 11 | deflate (content coding) 11 | |||
| DELETE method 29 | DELETE method 29 | |||
| E | E | |||
| Expect header field 34 | Expect header field 33 | |||
| F | F | |||
| From header field 44 | From header field 44 | |||
| G | G | |||
| GET method 24 | GET method 24 | |||
| Grammar | Grammar | |||
| Accept 38 | Accept 38 | |||
| Accept-Charset 40 | Accept-Charset 40 | |||
| Accept-Encoding 41 | Accept-Encoding 41 | |||
| accept-ext 38 | accept-ext 38 | |||
| Accept-Language 42 | Accept-Language 42 | |||
| accept-params 38 | accept-params 38 | |||
| Allow 72 | Allow 71 | |||
| asctime-date 67 | asctime-date 66 | |||
| attribute 8 | ||||
| charset 9 | charset 9 | |||
| codings 41 | codings 41 | |||
| content-coding 11 | content-coding 11 | |||
| Content-Encoding 12 | Content-Encoding 12 | |||
| Content-Language 13 | Content-Language 13 | |||
| Content-Location 15 | Content-Location 15 | |||
| Content-Type 10 | Content-Type 10 | |||
| Date 67 | Date 66 | |||
| date1 66 | date1 65 | |||
| day 66 | day 65 | |||
| day-name 66 | day-name 65 | |||
| day-name-l 66 | day-name-l 65 | |||
| delay-seconds 70 | delay-seconds 69 | |||
| Expect 34 | Expect 34 | |||
| From 44 | From 44 | |||
| GMT 66 | GMT 65 | |||
| hour 66 | hour 65 | |||
| HTTP-date 64 | HTTP-date 63 | |||
| IMF-fixdate 66 | IMF-fixdate 65 | |||
| language-range 42 | language-range 42 | |||
| language-tag 13 | language-tag 13 | |||
| Location 68 | Location 67 | |||
| Max-Forwards 36 | Max-Forwards 36 | |||
| media-range 38 | media-range 38 | |||
| media-type 8 | media-type 8 | |||
| method 21 | method 21 | |||
| minute 66 | minute 65 | |||
| month 66 | month 65 | |||
| obs-date 66 | obs-date 65 | |||
| parameter 8 | parameter 8 | |||
| product 46 | product 46 | |||
| product-version 46 | product-version 46 | |||
| qvalue 38 | qvalue 38 | |||
| Referer 45 | Referer 45 | |||
| Retry-After 70 | Retry-After 69 | |||
| rfc850-date 67 | rfc850-date 66 | |||
| second 66 | second 65 | |||
| Server 73 | Server 72 | |||
| subtype 8 | subtype 8 | |||
| time-of-day 66 | time-of-day 65 | |||
| type 8 | type 8 | |||
| User-Agent 46 | User-Agent 46 | |||
| value 8 | Vary 69 | |||
| Vary 70 | ||||
| weight 38 | weight 38 | |||
| year 66 | year 65 | |||
| gzip (content coding) 11 | gzip (content coding) 11 | |||
| H | H | |||
| HEAD method 25 | HEAD method 25 | |||
| I | I | |||
| idempotent 23 | idempotent 23 | |||
| L | L | |||
| Location header field 68 | Location header field 67 | |||
| M | M | |||
| Max-Forwards header field 36 | Max-Forwards header field 36 | |||
| MIME-Version header field 88 | MIME-Version header field 88 | |||
| O | O | |||
| OPTIONS method 31 | OPTIONS method 31 | |||
| P | P | |||
| payload 17 | payload 17 | |||
| POST method 25 | POST method 25 | |||
| PUT method 26 | PUT method 26 | |||
| R | R | |||
| Referer header field 45 | Referer header field 44 | |||
| representation 7 | representation 7 | |||
| Retry-After header field 69 | Retry-After header field 68 | |||
| S | S | |||
| safe 22 | safe 22 | |||
| selected representation 7, 71 | selected representation 7, 70 | |||
| Server header field 73 | Server header field 72 | |||
| Status Codes Classes | Status Codes Classes | |||
| 1xx Informational 50 | 1xx Informational 49 | |||
| 2xx Successful 51 | 2xx Successful 50 | |||
| 3xx Redirection 54 | 3xx Redirection 53 | |||
| 4xx Client Error 58 | 4xx Client Error 57 | |||
| 5xx Server Error 62 | 5xx Server Error 61 | |||
| T | T | |||
| TRACE method 32 | TRACE method 32 | |||
| U | U | |||
| User-Agent header field 46 | User-Agent header field 46 | |||
| V | V | |||
| Vary header field 70 | Vary header field 69 | |||
| X | X | |||
| x-compress (content coding) 11 | x-compress (content coding) 11 | |||
| x-gzip (content coding) 11 | x-gzip (content coding) 11 | |||
| Authors' Addresses | Authors' Addresses | |||
| Roy T. Fielding (editor) | Roy T. Fielding (editor) | |||
| Adobe Systems Incorporated | Adobe Systems Incorporated | |||
| 345 Park Ave | 345 Park Ave | |||
| End of changes. 103 change blocks. | ||||
| 315 lines changed or deleted | 387 lines changed or added | |||
This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||