| draft-ietf-httpbis-semantics-09.txt | draft-ietf-httpbis-semantics-10.txt | |||
|---|---|---|---|---|
| HTTP Working Group R. Fielding, Ed. | HTTP Working Group R. Fielding, Ed. | |||
| Internet-Draft Adobe | Internet-Draft Adobe | |||
| Obsoletes: 2818,7230,7231,7232,7233,7235 M. Nottingham, Ed. | Obsoletes: 2818, 7230, 7231, 7232, 7233, 7235, M. Nottingham, Ed. | |||
| ,7538,7615,7694 (if approved) Fastly | 7538, 7615, 7694 (if approved) Fastly | |||
| Intended status: Standards Track J. Reschke, Ed. | Intended status: Standards Track J. F. Reschke, Ed. | |||
| Expires: January 12, 2021 greenbytes | Expires: January 13, 2021 greenbytes | |||
| July 11, 2020 | July 12, 2020 | |||
| HTTP Semantics | HTTP Semantics | |||
| draft-ietf-httpbis-semantics-09 | draft-ietf-httpbis-semantics-10 | |||
| Abstract | Abstract | |||
| The Hypertext Transfer Protocol (HTTP) is a stateless application- | The Hypertext Transfer Protocol (HTTP) is a stateless application- | |||
| level protocol for distributed, collaborative, hypertext information | level protocol for distributed, collaborative, hypertext information | |||
| systems. This document defines the semantics of HTTP: its | systems. This document defines the semantics of HTTP: its | |||
| architecture, terminology, the "http" and "https" Uniform Resource | architecture, terminology, the "http" and "https" Uniform Resource | |||
| Identifier (URI) schemes, core request methods, request header | Identifier (URI) schemes, core request methods, request header | |||
| fields, response status codes, response header fields, and content | fields, response status codes, response header fields, and content | |||
| negotiation. | negotiation. | |||
| skipping to change at page 1, line 39 ¶ | skipping to change at page 1, line 39 ¶ | |||
| This note is to be removed before publishing as an RFC. | This note is to be removed before publishing as an RFC. | |||
| Discussion of this draft takes place on the HTTP working group | Discussion of this draft takes place on the HTTP working group | |||
| mailing list (ietf-http-wg@w3.org), which is archived at | mailing list (ietf-http-wg@w3.org), which is archived at | |||
| <https://lists.w3.org/Archives/Public/ietf-http-wg/>. | <https://lists.w3.org/Archives/Public/ietf-http-wg/>. | |||
| Working Group information can be found at <https://httpwg.org/>; | Working Group information can be found at <https://httpwg.org/>; | |||
| source code and issues list for this draft can be found at | source code and issues list for this draft can be found at | |||
| <https://github.com/httpwg/http-core>. | <https://github.com/httpwg/http-core>. | |||
| The changes in this draft are summarized in Appendix D.10. | The changes in this draft are summarized in Appendix D.11. | |||
| 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 https://datatracker.ietf.org/drafts/current/. | Drafts is at https://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 January 12, 2021. | This Internet-Draft will expire on January 13, 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 (https://trustee.ietf.org/ | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | license-info) in effect on the date of publication of this document. | |||
| publication of this document. Please review these documents | Please review these documents carefully, as they describe your rights | |||
| carefully, as they describe your rights and restrictions with respect | and restrictions with respect to this document. Code Components | |||
| to this document. Code Components extracted from this document must | extracted from this document must include Simplified BSD License text | |||
| include Simplified BSD License text as described in Section 4.e of | as described in Section 4.e of the Trust Legal Provisions and are | |||
| the Trust Legal Provisions and are provided without warranty as | provided without warranty as described in the Simplified BSD License. | |||
| described in the Simplified BSD License. | ||||
| This document may contain material from IETF Documents or IETF | This document may contain material from IETF Documents or IETF | |||
| Contributions published or made publicly available before November | Contributions published or made publicly available before November | |||
| 10, 2008. The person(s) controlling the copyright in some of this | 10, 2008. The person(s) controlling the copyright in some of this | |||
| material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
| modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
| Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
| the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
| outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
| not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
| skipping to change at page 2, line 47 ¶ | skipping to change at page 2, line 46 ¶ | |||
| than English. | than English. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1.1. Requirements Notation . . . . . . . . . . . . . . . . . . 9 | 1.1. Requirements Notation . . . . . . . . . . . . . . . . . . 9 | |||
| 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 10 | 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 1.2.1. Whitespace . . . . . . . . . . . . . . . . . . . . . 10 | 1.2.1. Whitespace . . . . . . . . . . . . . . . . . . . . . 10 | |||
| 2. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 11 | 2. Architecture . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 2.1. Client/Server Messaging . . . . . . . . . . . . . . . . . 11 | 2.1. Client/Server Messaging . . . . . . . . . . . . . . . . . 11 | |||
| 2.2. Intermediaries . . . . . . . . . . . . . . . . . . . . . 13 | 2.2. Intermediaries . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 2.3. Caches . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.3. Caches . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 2.4. Uniform Resource Identifiers . . . . . . . . . . . . . . 16 | 2.4. Uniform Resource Identifiers . . . . . . . . . . . . . . 16 | |||
| 2.5. Resources . . . . . . . . . . . . . . . . . . . . . . . . 17 | 2.5. Resources . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 2.5.1. http URI Scheme . . . . . . . . . . . . . . . . . . . 18 | 2.5.1. http URI Scheme . . . . . . . . . . . . . . . . . . . 18 | |||
| 2.5.2. https URI Scheme . . . . . . . . . . . . . . . . . . 18 | 2.5.2. https URI Scheme . . . . . . . . . . . . . . . . . . 19 | |||
| 2.5.3. http and https URI Normalization and Comparison . . . 19 | 2.5.3. http and https URI Normalization and Comparison . . . 20 | |||
| 2.5.4. Deprecated userinfo . . . . . . . . . . . . . . . . . 20 | 2.5.4. Deprecated userinfo . . . . . . . . . . . . . . . . . 20 | |||
| 2.5.5. Fragment Identifiers on http(s) URI References . . . 20 | 2.5.5. Fragment Identifiers on http(s) URI References . . . 21 | |||
| 3. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 3. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 3.1. Implementation Diversity . . . . . . . . . . . . . . . . 21 | 3.1. Implementation Diversity . . . . . . . . . . . . . . . . 21 | |||
| 3.2. Role-based Requirements . . . . . . . . . . . . . . . . . 21 | 3.2. Role-based Requirements . . . . . . . . . . . . . . . . . 22 | |||
| 3.3. Parsing Elements . . . . . . . . . . . . . . . . . . . . 22 | 3.3. Parsing Elements . . . . . . . . . . . . . . . . . . . . 23 | |||
| 3.4. Error Handling . . . . . . . . . . . . . . . . . . . . . 23 | 3.4. Error Handling . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 4. Extending and Versioning HTTP . . . . . . . . . . . . . . . . 23 | 4. Extending and Versioning HTTP . . . . . . . . . . . . . . . . 24 | |||
| 4.1. Extending HTTP . . . . . . . . . . . . . . . . . . . . . 23 | 4.1. Extending HTTP . . . . . . . . . . . . . . . . . . . . . 24 | |||
| 4.2. Protocol Versioning . . . . . . . . . . . . . . . . . . . 24 | 4.2. Protocol Versioning . . . . . . . . . . . . . . . . . . . 25 | |||
| 5. Header and Trailer Fields . . . . . . . . . . . . . . . . . . 25 | 5. Header and Trailer Fields . . . . . . . . . . . . . . . . . . 26 | |||
| 5.1. Field Ordering and Combination . . . . . . . . . . . . . 26 | 5.1. Field Ordering and Combination . . . . . . . . . . . . . 27 | |||
| 5.2. Field Limits . . . . . . . . . . . . . . . . . . . . . . 27 | 5.2. Field Limits . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 5.3. Field Names . . . . . . . . . . . . . . . . . . . . . . . 28 | 5.3. Field Names . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 5.3.1. Field Extensibility . . . . . . . . . . . . . . . . . 28 | 5.3.1. Field Extensibility . . . . . . . . . . . . . . . . . 29 | |||
| 5.3.2. Field Name Registry . . . . . . . . . . . . . . . . . 29 | 5.3.2. Field Name Registry . . . . . . . . . . . . . . . . . 30 | |||
| 5.4. Field Values . . . . . . . . . . . . . . . . . . . . . . 30 | 5.4. Field Values . . . . . . . . . . . . . . . . . . . . . . 31 | |||
| 5.4.1. Common Field Value Components . . . . . . . . . . . . 31 | 5.4.1. Common Field Value Components . . . . . . . . . . . . 32 | |||
| 5.5. ABNF List Extension: #rule . . . . . . . . . . . . . . . 35 | 5.5. ABNF List Extension: #rule . . . . . . . . . . . . . . . 36 | |||
| 5.5.1. Sender Requirements . . . . . . . . . . . . . . . . . 35 | 5.5.1. Sender Requirements . . . . . . . . . . . . . . . . . 36 | |||
| 5.5.2. Recipient Requirements . . . . . . . . . . . . . . . 36 | 5.5.2. Recipient Requirements . . . . . . . . . . . . . . . 37 | |||
| 5.6. Trailer Fields . . . . . . . . . . . . . . . . . . . . . 36 | 5.6. Trailer Fields . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 5.6.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 36 | 5.6.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 5.6.2. Limitations . . . . . . . . . . . . . . . . . . . . . 37 | 5.6.2. Limitations . . . . . . . . . . . . . . . . . . . . . 38 | |||
| 5.6.3. Trailer . . . . . . . . . . . . . . . . . . . . . . . 37 | 5.6.3. Trailer . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
| 5.7. Considerations for New HTTP Fields . . . . . . . . . . . 38 | 5.7. Considerations for New HTTP Fields . . . . . . . . . . . 39 | |||
| 5.8. Fields Defined In This Document . . . . . . . . . . . . . 39 | 5.8. Fields Defined In This Document . . . . . . . . . . . . . 40 | |||
| 6. Message Routing . . . . . . . . . . . . . . . . . . . . . . . 41 | 6. Message Routing . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 6.1. Identifying a Target Resource . . . . . . . . . . . . . . 41 | 6.1. Identifying a Target Resource . . . . . . . . . . . . . . 42 | |||
| 6.2. Determining Origin . . . . . . . . . . . . . . . . . . . 42 | 6.2. Determining Origin . . . . . . . . . . . . . . . . . . . 43 | |||
| 6.3. Routing Inbound . . . . . . . . . . . . . . . . . . . . . 42 | 6.3. Routing Inbound . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 6.4. Direct Authoritative Access . . . . . . . . . . . . . . . 43 | 6.4. Direct Authoritative Access . . . . . . . . . . . . . . . 44 | |||
| 6.4.1. http origins . . . . . . . . . . . . . . . . . . . . 43 | 6.4.1. http origins . . . . . . . . . . . . . . . . . . . . 44 | |||
| 6.4.2. https origins . . . . . . . . . . . . . . . . . . . . 44 | 6.4.2. https origins . . . . . . . . . . . . . . . . . . . . 45 | |||
| 6.4.3. Initiating HTTP Over TLS . . . . . . . . . . . . . . 45 | 6.4.3. Initiating HTTP Over TLS . . . . . . . . . . . . . . 46 | |||
| 6.5. Reconstructing the Target URI . . . . . . . . . . . . . . 47 | 6.5. Reconstructing the Target URI . . . . . . . . . . . . . . 48 | |||
| 6.6. Host . . . . . . . . . . . . . . . . . . . . . . . . . . 48 | 6.6. Host . . . . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 6.7. Message Forwarding . . . . . . . . . . . . . . . . . . . 48 | 6.7. Message Forwarding . . . . . . . . . . . . . . . . . . . 50 | |||
| 6.7.1. Via . . . . . . . . . . . . . . . . . . . . . . . . . 49 | 6.7.1. Via . . . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
| 6.7.2. Transformations . . . . . . . . . . . . . . . . . . . 51 | 6.7.2. Transformations . . . . . . . . . . . . . . . . . . . 52 | |||
| 7. Representations . . . . . . . . . . . . . . . . . . . . . . . 52 | 7. Representations . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
| 7.1. Representation Data . . . . . . . . . . . . . . . . . . . 52 | 7.1. Representation Data . . . . . . . . . . . . . . . . . . . 54 | |||
| 7.1.1. Media Type . . . . . . . . . . . . . . . . . . . . . 53 | 7.1.1. Media Type . . . . . . . . . . . . . . . . . . . . . 54 | |||
| 7.1.2. Content Codings . . . . . . . . . . . . . . . . . . . 55 | 7.1.2. Content Codings . . . . . . . . . . . . . . . . . . . 56 | |||
| 7.1.3. Language Tags . . . . . . . . . . . . . . . . . . . . 57 | 7.1.3. Language Tags . . . . . . . . . . . . . . . . . . . . 58 | |||
| 7.1.4. Range Units . . . . . . . . . . . . . . . . . . . . . 57 | 7.1.4. Range Units . . . . . . . . . . . . . . . . . . . . . 59 | |||
| 7.2. Representation Metadata . . . . . . . . . . . . . . . . . 61 | 7.2. Representation Metadata . . . . . . . . . . . . . . . . . 63 | |||
| 7.2.1. Content-Type . . . . . . . . . . . . . . . . . . . . 62 | 7.2.1. Content-Type . . . . . . . . . . . . . . . . . . . . 63 | |||
| 7.2.2. Content-Encoding . . . . . . . . . . . . . . . . . . 63 | 7.2.2. Content-Encoding . . . . . . . . . . . . . . . . . . 64 | |||
| 7.2.3. Content-Language . . . . . . . . . . . . . . . . . . 64 | 7.2.3. Content-Language . . . . . . . . . . . . . . . . . . 65 | |||
| 7.2.4. Content-Length . . . . . . . . . . . . . . . . . . . 64 | 7.2.4. Content-Length . . . . . . . . . . . . . . . . . . . 66 | |||
| 7.2.5. Content-Location . . . . . . . . . . . . . . . . . . 66 | 7.2.5. Content-Location . . . . . . . . . . . . . . . . . . 67 | |||
| 7.3. Payload . . . . . . . . . . . . . . . . . . . . . . . . . 68 | 7.3. Payload . . . . . . . . . . . . . . . . . . . . . . . . . 69 | |||
| 7.3.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 68 | 7.3.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 69 | |||
| 7.3.2. Identification . . . . . . . . . . . . . . . . . . . 68 | 7.3.2. Identification . . . . . . . . . . . . . . . . . . . 70 | |||
| 7.3.3. Payload Body . . . . . . . . . . . . . . . . . . . . 69 | 7.3.3. Payload Body . . . . . . . . . . . . . . . . . . . . 71 | |||
| 7.3.4. Content-Range . . . . . . . . . . . . . . . . . . . . 70 | 7.3.4. Content-Range . . . . . . . . . . . . . . . . . . . . 72 | |||
| 7.3.5. Media Type multipart/byteranges . . . . . . . . . . . 72 | 7.3.5. Media Type multipart/byteranges . . . . . . . . . . . 73 | |||
| 7.4. Content Negotiation . . . . . . . . . . . . . . . . . . . 74 | 7.4. Content Negotiation . . . . . . . . . . . . . . . . . . . 75 | |||
| 7.4.1. Proactive Negotiation . . . . . . . . . . . . . . . . 75 | 7.4.1. Proactive Negotiation . . . . . . . . . . . . . . . . 76 | |||
| 7.4.2. Reactive Negotiation . . . . . . . . . . . . . . . . 76 | 7.4.2. Reactive Negotiation . . . . . . . . . . . . . . . . 77 | |||
| 7.4.3. Request Payload Negotiation . . . . . . . . . . . . . 77 | 7.4.3. Request Payload Negotiation . . . . . . . . . . . . . 78 | |||
| 7.4.4. Quality Values . . . . . . . . . . . . . . . . . . . 77 | 7.4.4. Quality Values . . . . . . . . . . . . . . . . . . . 78 | |||
| 8. Request Methods . . . . . . . . . . . . . . . . . . . . . . . 77 | 8. Request Methods . . . . . . . . . . . . . . . . . . . . . . . 79 | |||
| 8.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 77 | 8.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 79 | |||
| 8.2. Common Method Properties . . . . . . . . . . . . . . . . 79 | 8.2. Common Method Properties . . . . . . . . . . . . . . . . 80 | |||
| 8.2.1. Safe Methods . . . . . . . . . . . . . . . . . . . . 80 | 8.2.1. Safe Methods . . . . . . . . . . . . . . . . . . . . 81 | |||
| 8.2.2. Idempotent Methods . . . . . . . . . . . . . . . . . 81 | 8.2.2. Idempotent Methods . . . . . . . . . . . . . . . . . 82 | |||
| 8.2.3. Methods and Caching . . . . . . . . . . . . . . . . . 82 | 8.2.3. Methods and Caching . . . . . . . . . . . . . . . . . 83 | |||
| 8.3. Method Definitions . . . . . . . . . . . . . . . . . . . 82 | 8.3. Method Definitions . . . . . . . . . . . . . . . . . . . 83 | |||
| 8.3.1. GET . . . . . . . . . . . . . . . . . . . . . . . . . 82 | 8.3.1. GET . . . . . . . . . . . . . . . . . . . . . . . . . 83 | |||
| 8.3.2. HEAD . . . . . . . . . . . . . . . . . . . . . . . . 83 | 8.3.2. HEAD . . . . . . . . . . . . . . . . . . . . . . . . 84 | |||
| 8.3.3. POST . . . . . . . . . . . . . . . . . . . . . . . . 84 | 8.3.3. POST . . . . . . . . . . . . . . . . . . . . . . . . 84 | |||
| 8.3.4. PUT . . . . . . . . . . . . . . . . . . . . . . . . . 85 | 8.3.4. PUT . . . . . . . . . . . . . . . . . . . . . . . . . 85 | |||
| 8.3.5. DELETE . . . . . . . . . . . . . . . . . . . . . . . 87 | 8.3.5. DELETE . . . . . . . . . . . . . . . . . . . . . . . 88 | |||
| 8.3.6. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 88 | 8.3.6. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 89 | |||
| 8.3.7. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . 90 | 8.3.7. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
| 8.3.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . 91 | 8.3.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . 92 | |||
| 8.4. Method Extensibility . . . . . . . . . . . . . . . . . . 91 | 8.4. Method Extensibility . . . . . . . . . . . . . . . . . . 92 | |||
| 8.4.1. Method Registry . . . . . . . . . . . . . . . . . . . 92 | 8.4.1. Method Registry . . . . . . . . . . . . . . . . . . . 92 | |||
| 8.4.2. Considerations for New Methods . . . . . . . . . . . 92 | 8.4.2. Considerations for New Methods . . . . . . . . . . . 93 | |||
| 9. Request Header Fields . . . . . . . . . . . . . . . . . . . . 93 | 9. Request Header Fields . . . . . . . . . . . . . . . . . . . . 94 | |||
| 9.1. Controls . . . . . . . . . . . . . . . . . . . . . . . . 93 | 9.1. Controls . . . . . . . . . . . . . . . . . . . . . . . . 94 | |||
| 9.1.1. Expect . . . . . . . . . . . . . . . . . . . . . . . 93 | 9.1.1. Expect . . . . . . . . . . . . . . . . . . . . . . . 94 | |||
| 9.1.2. Max-Forwards . . . . . . . . . . . . . . . . . . . . 96 | 9.1.2. Max-Forwards . . . . . . . . . . . . . . . . . . . . 97 | |||
| 9.2. Preconditions . . . . . . . . . . . . . . . . . . . . . . 96 | 9.2. Preconditions . . . . . . . . . . . . . . . . . . . . . . 97 | |||
| 9.2.1. Evaluation . . . . . . . . . . . . . . . . . . . . . 97 | 9.2.1. Evaluation . . . . . . . . . . . . . . . . . . . . . 98 | |||
| 9.2.2. Precedence . . . . . . . . . . . . . . . . . . . . . 98 | 9.2.2. Precedence . . . . . . . . . . . . . . . . . . . . . 99 | |||
| 9.2.3. If-Match . . . . . . . . . . . . . . . . . . . . . . 100 | 9.2.3. If-Match . . . . . . . . . . . . . . . . . . . . . . 101 | |||
| 9.2.4. If-None-Match . . . . . . . . . . . . . . . . . . . . 101 | 9.2.4. If-None-Match . . . . . . . . . . . . . . . . . . . . 102 | |||
| 9.2.5. If-Modified-Since . . . . . . . . . . . . . . . . . . 103 | 9.2.5. If-Modified-Since . . . . . . . . . . . . . . . . . . 103 | |||
| 9.2.6. If-Unmodified-Since . . . . . . . . . . . . . . . . . 104 | 9.2.6. If-Unmodified-Since . . . . . . . . . . . . . . . . . 105 | |||
| 9.2.7. If-Range . . . . . . . . . . . . . . . . . . . . . . 105 | 9.2.7. If-Range . . . . . . . . . . . . . . . . . . . . . . 106 | |||
| 9.3. Range . . . . . . . . . . . . . . . . . . . . . . . . . . 106 | 9.3. Range . . . . . . . . . . . . . . . . . . . . . . . . . . 107 | |||
| 9.4. Negotiation . . . . . . . . . . . . . . . . . . . . . . . 108 | 9.4. Negotiation . . . . . . . . . . . . . . . . . . . . . . . 109 | |||
| 9.4.1. Accept . . . . . . . . . . . . . . . . . . . . . . . 109 | 9.4.1. Accept . . . . . . . . . . . . . . . . . . . . . . . 110 | |||
| 9.4.2. Accept-Charset . . . . . . . . . . . . . . . . . . . 111 | 9.4.2. Accept-Charset . . . . . . . . . . . . . . . . . . . 112 | |||
| 9.4.3. Accept-Encoding . . . . . . . . . . . . . . . . . . . 112 | 9.4.3. Accept-Encoding . . . . . . . . . . . . . . . . . . . 113 | |||
| 9.4.4. Accept-Language . . . . . . . . . . . . . . . . . . . 114 | 9.4.4. Accept-Language . . . . . . . . . . . . . . . . . . . 115 | |||
| 9.5. Authentication Credentials . . . . . . . . . . . . . . . 115 | 9.5. Authentication Credentials . . . . . . . . . . . . . . . 116 | |||
| 9.5.1. Challenge and Response . . . . . . . . . . . . . . . 115 | 9.5.1. Challenge and Response . . . . . . . . . . . . . . . 116 | |||
| 9.5.2. Protection Space (Realm) . . . . . . . . . . . . . . 117 | 9.5.2. Protection Space (Realm) . . . . . . . . . . . . . . 118 | |||
| 9.5.3. Authorization . . . . . . . . . . . . . . . . . . . . 118 | 9.5.3. Authorization . . . . . . . . . . . . . . . . . . . . 119 | |||
| 9.5.4. Proxy-Authorization . . . . . . . . . . . . . . . . . 118 | 9.5.4. Proxy-Authorization . . . . . . . . . . . . . . . . . 119 | |||
| 9.5.5. Authentication Scheme Extensibility . . . . . . . . . 118 | 9.5.5. Authentication Scheme Extensibility . . . . . . . . . 120 | |||
| 9.6. Request Context . . . . . . . . . . . . . . . . . . . . . 121 | 9.6. Request Context . . . . . . . . . . . . . . . . . . . . . 122 | |||
| 9.6.1. From . . . . . . . . . . . . . . . . . . . . . . . . 121 | 9.6.1. From . . . . . . . . . . . . . . . . . . . . . . . . 122 | |||
| 9.6.2. Referer . . . . . . . . . . . . . . . . . . . . . . . 122 | 9.6.2. Referer . . . . . . . . . . . . . . . . . . . . . . . 123 | |||
| 9.6.3. User-Agent . . . . . . . . . . . . . . . . . . . . . 123 | 9.6.3. User-Agent . . . . . . . . . . . . . . . . . . . . . 124 | |||
| 10. Response Status Codes . . . . . . . . . . . . . . . . . . . . 124 | 10. Response Status Codes . . . . . . . . . . . . . . . . . . . . 125 | |||
| 10.1. Overview of Status Codes . . . . . . . . . . . . . . . . 125 | 10.1. Overview of Status Codes . . . . . . . . . . . . . . . . 126 | |||
| 10.2. Informational 1xx . . . . . . . . . . . . . . . . . . . 126 | 10.2. Informational 1xx . . . . . . . . . . . . . . . . . . . 127 | |||
| 10.2.1. 100 Continue . . . . . . . . . . . . . . . . . . . . 127 | 10.2.1. 100 Continue . . . . . . . . . . . . . . . . . . . . 127 | |||
| 10.2.2. 101 Switching Protocols . . . . . . . . . . . . . . 127 | 10.2.2. 101 Switching Protocols . . . . . . . . . . . . . . 128 | |||
| 10.3. Successful 2xx . . . . . . . . . . . . . . . . . . . . . 127 | 10.3. Successful 2xx . . . . . . . . . . . . . . . . . . . . . 128 | |||
| 10.3.1. 200 OK . . . . . . . . . . . . . . . . . . . . . . . 127 | 10.3.1. 200 OK . . . . . . . . . . . . . . . . . . . . . . . 128 | |||
| 10.3.2. 201 Created . . . . . . . . . . . . . . . . . . . . 128 | 10.3.2. 201 Created . . . . . . . . . . . . . . . . . . . . 129 | |||
| 10.3.3. 202 Accepted . . . . . . . . . . . . . . . . . . . . 128 | 10.3.3. 202 Accepted . . . . . . . . . . . . . . . . . . . . 129 | |||
| 10.3.4. 203 Non-Authoritative Information . . . . . . . . . 129 | 10.3.4. 203 Non-Authoritative Information . . . . . . . . . 130 | |||
| 10.3.5. 204 No Content . . . . . . . . . . . . . . . . . . . 129 | 10.3.5. 204 No Content . . . . . . . . . . . . . . . . . . . 130 | |||
| 10.3.6. 205 Reset Content . . . . . . . . . . . . . . . . . 130 | 10.3.6. 205 Reset Content . . . . . . . . . . . . . . . . . 131 | |||
| 10.3.7. 206 Partial Content . . . . . . . . . . . . . . . . 130 | 10.3.7. 206 Partial Content . . . . . . . . . . . . . . . . 131 | |||
| 10.4. Redirection 3xx . . . . . . . . . . . . . . . . . . . . 133 | 10.4. Redirection 3xx . . . . . . . . . . . . . . . . . . . . 135 | |||
| 10.4.1. 300 Multiple Choices . . . . . . . . . . . . . . . . 135 | 10.4.1. 300 Multiple Choices . . . . . . . . . . . . . . . . 136 | |||
| 10.4.2. 301 Moved Permanently . . . . . . . . . . . . . . . 136 | 10.4.2. 301 Moved Permanently . . . . . . . . . . . . . . . 137 | |||
| 10.4.3. 302 Found . . . . . . . . . . . . . . . . . . . . . 136 | 10.4.3. 302 Found . . . . . . . . . . . . . . . . . . . . . 137 | |||
| 10.4.4. 303 See Other . . . . . . . . . . . . . . . . . . . 137 | 10.4.4. 303 See Other . . . . . . . . . . . . . . . . . . . 138 | |||
| 10.4.5. 304 Not Modified . . . . . . . . . . . . . . . . . . 137 | 10.4.5. 304 Not Modified . . . . . . . . . . . . . . . . . . 138 | |||
| 10.4.6. 305 Use Proxy . . . . . . . . . . . . . . . . . . . 138 | 10.4.6. 305 Use Proxy . . . . . . . . . . . . . . . . . . . 139 | |||
| 10.4.7. 306 (Unused) . . . . . . . . . . . . . . . . . . . . 138 | 10.4.7. 306 (Unused) . . . . . . . . . . . . . . . . . . . . 139 | |||
| 10.4.8. 307 Temporary Redirect . . . . . . . . . . . . . . . 138 | 10.4.8. 307 Temporary Redirect . . . . . . . . . . . . . . . 139 | |||
| 10.4.9. 308 Permanent Redirect . . . . . . . . . . . . . . . 139 | 10.4.9. 308 Permanent Redirect . . . . . . . . . . . . . . . 140 | |||
| 10.5. Client Error 4xx . . . . . . . . . . . . . . . . . . . . 139 | 10.5. Client Error 4xx . . . . . . . . . . . . . . . . . . . . 140 | |||
| 10.5.1. 400 Bad Request . . . . . . . . . . . . . . . . . . 139 | 10.5.1. 400 Bad Request . . . . . . . . . . . . . . . . . . 140 | |||
| 10.5.2. 401 Unauthorized . . . . . . . . . . . . . . . . . . 139 | 10.5.2. 401 Unauthorized . . . . . . . . . . . . . . . . . . 140 | |||
| 10.5.3. 402 Payment Required . . . . . . . . . . . . . . . . 140 | 10.5.3. 402 Payment Required . . . . . . . . . . . . . . . . 141 | |||
| 10.5.4. 403 Forbidden . . . . . . . . . . . . . . . . . . . 140 | 10.5.4. 403 Forbidden . . . . . . . . . . . . . . . . . . . 141 | |||
| 10.5.5. 404 Not Found . . . . . . . . . . . . . . . . . . . 140 | 10.5.5. 404 Not Found . . . . . . . . . . . . . . . . . . . 141 | |||
| 10.5.6. 405 Method Not Allowed . . . . . . . . . . . . . . . 141 | 10.5.6. 405 Method Not Allowed . . . . . . . . . . . . . . . 142 | |||
| 10.5.7. 406 Not Acceptable . . . . . . . . . . . . . . . . . 141 | 10.5.7. 406 Not Acceptable . . . . . . . . . . . . . . . . . 142 | |||
| 10.5.8. 407 Proxy Authentication Required . . . . . . . . . 141 | 10.5.8. 407 Proxy Authentication Required . . . . . . . . . 142 | |||
| 10.5.9. 408 Request Timeout . . . . . . . . . . . . . . . . 141 | 10.5.9. 408 Request Timeout . . . . . . . . . . . . . . . . 142 | |||
| 10.5.10. 409 Conflict . . . . . . . . . . . . . . . . . . . . 142 | 10.5.10. 409 Conflict . . . . . . . . . . . . . . . . . . . . 143 | |||
| 10.5.11. 410 Gone . . . . . . . . . . . . . . . . . . . . . . 142 | 10.5.11. 410 Gone . . . . . . . . . . . . . . . . . . . . . . 143 | |||
| 10.5.12. 411 Length Required . . . . . . . . . . . . . . . . 142 | 10.5.12. 411 Length Required . . . . . . . . . . . . . . . . 143 | |||
| 10.5.13. 412 Precondition Failed . . . . . . . . . . . . . . 143 | 10.5.13. 412 Precondition Failed . . . . . . . . . . . . . . 144 | |||
| 10.5.14. 413 Payload Too Large . . . . . . . . . . . . . . . 143 | 10.5.14. 413 Payload Too Large . . . . . . . . . . . . . . . 144 | |||
| 10.5.15. 414 URI Too Long . . . . . . . . . . . . . . . . . . 143 | 10.5.15. 414 URI Too Long . . . . . . . . . . . . . . . . . . 144 | |||
| 10.5.16. 415 Unsupported Media Type . . . . . . . . . . . . . 143 | 10.5.16. 415 Unsupported Media Type . . . . . . . . . . . . . 144 | |||
| 10.5.17. 416 Range Not Satisfiable . . . . . . . . . . . . . 144 | 10.5.17. 416 Range Not Satisfiable . . . . . . . . . . . . . 145 | |||
| 10.5.18. 417 Expectation Failed . . . . . . . . . . . . . . . 144 | 10.5.18. 417 Expectation Failed . . . . . . . . . . . . . . . 145 | |||
| 10.5.19. 418 (Unused) . . . . . . . . . . . . . . . . . . . . 145 | 10.5.19. 418 (Unused) . . . . . . . . . . . . . . . . . . . . 146 | |||
| 10.5.20. 422 Unprocessable Payload . . . . . . . . . . . . . 145 | 10.5.20. 422 Unprocessable Payload . . . . . . . . . . . . . 146 | |||
| 10.5.21. 426 Upgrade Required . . . . . . . . . . . . . . . . 145 | 10.5.21. 426 Upgrade Required . . . . . . . . . . . . . . . . 146 | |||
| 10.6. Server Error 5xx . . . . . . . . . . . . . . . . . . . . 145 | 10.6. Server Error 5xx . . . . . . . . . . . . . . . . . . . . 147 | |||
| 10.6.1. 500 Internal Server Error . . . . . . . . . . . . . 146 | 10.6.1. 500 Internal Server Error . . . . . . . . . . . . . 147 | |||
| 10.6.2. 501 Not Implemented . . . . . . . . . . . . . . . . 146 | 10.6.2. 501 Not Implemented . . . . . . . . . . . . . . . . 147 | |||
| 10.6.3. 502 Bad Gateway . . . . . . . . . . . . . . . . . . 146 | 10.6.3. 502 Bad Gateway . . . . . . . . . . . . . . . . . . 147 | |||
| 10.6.4. 503 Service Unavailable . . . . . . . . . . . . . . 146 | 10.6.4. 503 Service Unavailable . . . . . . . . . . . . . . 147 | |||
| 10.6.5. 504 Gateway Timeout . . . . . . . . . . . . . . . . 146 | 10.6.5. 504 Gateway Timeout . . . . . . . . . . . . . . . . 148 | |||
| 10.6.6. 505 HTTP Version Not Supported . . . . . . . . . . . 147 | 10.6.6. 505 HTTP Version Not Supported . . . . . . . . . . . 148 | |||
| 10.7. Status Code Extensibility . . . . . . . . . . . . . . . 147 | 10.7. Status Code Extensibility . . . . . . . . . . . . . . . 148 | |||
| 10.7.1. Status Code Registry . . . . . . . . . . . . . . . . 147 | 10.7.1. Status Code Registry . . . . . . . . . . . . . . . . 148 | |||
| 10.7.2. Considerations for New Status Codes . . . . . . . . 147 | 10.7.2. Considerations for New Status Codes . . . . . . . . 149 | |||
| 11. Response Header Fields . . . . . . . . . . . . . . . . . . . 148 | 11. Response Header Fields . . . . . . . . . . . . . . . . . . . 150 | |||
| 11.1. Control Data . . . . . . . . . . . . . . . . . . . . . . 149 | 11.1. Control Data . . . . . . . . . . . . . . . . . . . . . . 150 | |||
| 11.1.1. Date . . . . . . . . . . . . . . . . . . . . . . . . 149 | 11.1.1. Date . . . . . . . . . . . . . . . . . . . . . . . . 150 | |||
| 11.1.2. Location . . . . . . . . . . . . . . . . . . . . . . 150 | 11.1.2. Location . . . . . . . . . . . . . . . . . . . . . . 151 | |||
| 11.1.3. Retry-After . . . . . . . . . . . . . . . . . . . . 151 | 11.1.3. Retry-After . . . . . . . . . . . . . . . . . . . . 153 | |||
| 11.1.4. Vary . . . . . . . . . . . . . . . . . . . . . . . . 152 | 11.1.4. Vary . . . . . . . . . . . . . . . . . . . . . . . . 153 | |||
| 11.2. Validators . . . . . . . . . . . . . . . . . . . . . . . 153 | 11.2. Validators . . . . . . . . . . . . . . . . . . . . . . . 154 | |||
| 11.2.1. Weak versus Strong . . . . . . . . . . . . . . . . . 154 | 11.2.1. Weak versus Strong . . . . . . . . . . . . . . . . . 155 | |||
| 11.2.2. Last-Modified . . . . . . . . . . . . . . . . . . . 155 | 11.2.2. Last-Modified . . . . . . . . . . . . . . . . . . . 157 | |||
| 11.2.3. ETag . . . . . . . . . . . . . . . . . . . . . . . . 157 | 11.2.3. ETag . . . . . . . . . . . . . . . . . . . . . . . . 159 | |||
| 11.2.4. When to Use Entity-Tags and Last-Modified Dates . . 161 | 11.2.4. When to Use Entity-Tags and Last-Modified Dates . . 162 | |||
| 11.3. Authentication Challenges . . . . . . . . . . . . . . . 161 | 11.3. Authentication Challenges . . . . . . . . . . . . . . . 163 | |||
| 11.3.1. WWW-Authenticate . . . . . . . . . . . . . . . . . . 162 | 11.3.1. WWW-Authenticate . . . . . . . . . . . . . . . . . . 163 | |||
| 11.3.2. Proxy-Authenticate . . . . . . . . . . . . . . . . . 163 | 11.3.2. Proxy-Authenticate . . . . . . . . . . . . . . . . . 164 | |||
| 11.3.3. Authentication-Info . . . . . . . . . . . . . . . . 163 | 11.3.3. Authentication-Info . . . . . . . . . . . . . . . . 165 | |||
| 11.3.4. Proxy-Authentication-Info . . . . . . . . . . . . . 164 | 11.3.4. Proxy-Authentication-Info . . . . . . . . . . . . . 166 | |||
| 11.4. Response Context . . . . . . . . . . . . . . . . . . . . 165 | 11.4. Response Context . . . . . . . . . . . . . . . . . . . . 166 | |||
| 11.4.1. Accept-Ranges . . . . . . . . . . . . . . . . . . . 165 | 11.4.1. Accept-Ranges . . . . . . . . . . . . . . . . . . . 166 | |||
| 11.4.2. Allow . . . . . . . . . . . . . . . . . . . . . . . 165 | 11.4.2. Allow . . . . . . . . . . . . . . . . . . . . . . . 167 | |||
| 11.4.3. Server . . . . . . . . . . . . . . . . . . . . . . . 166 | 11.4.3. Server . . . . . . . . . . . . . . . . . . . . . . . 167 | |||
| 12. Security Considerations . . . . . . . . . . . . . . . . . . . 167 | 12. Security Considerations . . . . . . . . . . . . . . . . . . . 168 | |||
| 12.1. Establishing Authority . . . . . . . . . . . . . . . . . 167 | 12.1. Establishing Authority . . . . . . . . . . . . . . . . . 168 | |||
| 12.2. Risks of Intermediaries . . . . . . . . . . . . . . . . 168 | 12.2. Risks of Intermediaries . . . . . . . . . . . . . . . . 169 | |||
| 12.3. Attacks Based on File and Path Names . . . . . . . . . . 169 | 12.3. Attacks Based on File and Path Names . . . . . . . . . . 170 | |||
| 12.4. Attacks Based on Command, Code, or Query Injection . . . 169 | 12.4. Attacks Based on Command, Code, or Query Injection . . . 171 | |||
| 12.5. Attacks via Protocol Element Length . . . . . . . . . . 170 | 12.5. Attacks via Protocol Element Length . . . . . . . . . . 171 | |||
| 12.6. Disclosure of Personal Information . . . . . . . . . . . 170 | 12.6. Disclosure of Personal Information . . . . . . . . . . . 172 | |||
| 12.7. Privacy of Server Log Information . . . . . . . . . . . 170 | 12.7. Privacy of Server Log Information . . . . . . . . . . . 172 | |||
| 12.8. Disclosure of Sensitive Information in URIs . . . . . . 171 | 12.8. Disclosure of Sensitive Information in URIs . . . . . . 173 | |||
| 12.9. Disclosure of Fragment after Redirects . . . . . . . . . 171 | 12.9. Disclosure of Fragment after Redirects . . . . . . . . . 173 | |||
| 12.10. Disclosure of Product Information . . . . . . . . . . . 172 | 12.10. Disclosure of Product Information . . . . . . . . . . . 173 | |||
| 12.11. Browser Fingerprinting . . . . . . . . . . . . . . . . . 172 | 12.11. Browser Fingerprinting . . . . . . . . . . . . . . . . . 174 | |||
| 12.12. Validator Retention . . . . . . . . . . . . . . . . . . 173 | 12.12. Validator Retention . . . . . . . . . . . . . . . . . . 175 | |||
| 12.13. Denial-of-Service Attacks Using Range . . . . . . . . . 174 | 12.13. Denial-of-Service Attacks Using Range . . . . . . . . . 175 | |||
| 12.14. Authentication Considerations . . . . . . . . . . . . . 174 | 12.14. Authentication Considerations . . . . . . . . . . . . . 176 | |||
| 12.14.1. Confidentiality of Credentials . . . . . . . . . . 174 | 12.14.1. Confidentiality of Credentials . . . . . . . . . . 176 | |||
| 12.14.2. Credentials and Idle Clients . . . . . . . . . . . 175 | 12.14.2. Credentials and Idle Clients . . . . . . . . . . . 176 | |||
| 12.14.3. Protection Spaces . . . . . . . . . . . . . . . . . 175 | 12.14.3. Protection Spaces . . . . . . . . . . . . . . . . . 177 | |||
| 12.14.4. Additional Response Fields . . . . . . . . . . . . 176 | 12.14.4. Additional Response Fields . . . . . . . . . . . . 177 | |||
| 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 176 | 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 177 | |||
| 13.1. URI Scheme Registration . . . . . . . . . . . . . . . . 176 | 13.1. URI Scheme Registration . . . . . . . . . . . . . . . . 178 | |||
| 13.2. Method Registration . . . . . . . . . . . . . . . . . . 176 | 13.2. Method Registration . . . . . . . . . . . . . . . . . . 178 | |||
| 13.3. Status Code Registration . . . . . . . . . . . . . . . . 176 | 13.3. Status Code Registration . . . . . . . . . . . . . . . . 178 | |||
| 13.4. HTTP Field Name Registration . . . . . . . . . . . . . . 177 | 13.4. HTTP Field Name Registration . . . . . . . . . . . . . . 178 | |||
| 13.5. Authentication Scheme Registration . . . . . . . . . . . 177 | 13.5. Authentication Scheme Registration . . . . . . . . . . . 179 | |||
| 13.6. Content Coding Registration . . . . . . . . . . . . . . 178 | 13.6. Content Coding Registration . . . . . . . . . . . . . . 179 | |||
| 13.7. Range Unit Registration . . . . . . . . . . . . . . . . 178 | 13.7. Range Unit Registration . . . . . . . . . . . . . . . . 180 | |||
| 13.8. Media Type Registration . . . . . . . . . . . . . . . . 178 | 13.8. Media Type Registration . . . . . . . . . . . . . . . . 180 | |||
| 13.9. Port Registration . . . . . . . . . . . . . . . . . . . 178 | 13.9. Port Registration . . . . . . . . . . . . . . . . . . . 180 | |||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 178 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 180 | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . 178 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 180 | |||
| 14.2. Informative References . . . . . . . . . . . . . . . . . 180 | 14.2. Informative References . . . . . . . . . . . . . . . . . 182 | |||
| Appendix A. Collected ABNF . . . . . . . . . . . . . . . . . . . 187 | Appendix A. Collected ABNF . . . . . . . . . . . . . . . . . . . 188 | |||
| Appendix B. Changes from previous RFCs . . . . . . . . . . . . . 191 | Appendix B. Changes from previous RFCs . . . . . . . . . . . . . 192 | |||
| B.1. Changes from RFC 2818 . . . . . . . . . . . . . . . . . . 191 | B.1. Changes from RFC 2818 . . . . . . . . . . . . . . . . . . 192 | |||
| B.2. Changes from RFC 7230 . . . . . . . . . . . . . . . . . . 191 | B.2. Changes from RFC 7230 . . . . . . . . . . . . . . . . . . 192 | |||
| B.3. Changes from RFC 7231 . . . . . . . . . . . . . . . . . . 192 | B.3. Changes from RFC 7231 . . . . . . . . . . . . . . . . . . 193 | |||
| B.4. Changes from RFC 7232 . . . . . . . . . . . . . . . . . . 193 | B.4. Changes from RFC 7232 . . . . . . . . . . . . . . . . . . 194 | |||
| B.5. Changes from RFC 7233 . . . . . . . . . . . . . . . . . . 193 | B.5. Changes from RFC 7233 . . . . . . . . . . . . . . . . . . 194 | |||
| B.6. Changes from RFC 7235 . . . . . . . . . . . . . . . . . . 193 | B.6. Changes from RFC 7235 . . . . . . . . . . . . . . . . . . 194 | |||
| B.7. Changes from RFC 7538 . . . . . . . . . . . . . . . . . . 193 | B.7. Changes from RFC 7538 . . . . . . . . . . . . . . . . . . 194 | |||
| B.8. Changes from RFC 7615 . . . . . . . . . . . . . . . . . . 193 | B.8. Changes from RFC 7615 . . . . . . . . . . . . . . . . . . 194 | |||
| Appendix C. Changes from RFC 7694 . . . . . . . . . . . . . . . 193 | Appendix C. Changes from RFC 7694 . . . . . . . . . . . . . . . 195 | |||
| Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 193 | Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 195 | |||
| D.1. Between RFC723x and draft 00 . . . . . . . . . . . . . . 194 | D.1. Between RFC723x and draft 00 . . . . . . . . . . . . . . 195 | |||
| D.2. Since draft-ietf-httpbis-semantics-00 . . . . . . . . . . 194 | D.2. Since draft-ietf-httpbis-semantics-00 . . . . . . . . . . 195 | |||
| D.3. Since draft-ietf-httpbis-semantics-01 . . . . . . . . . . 195 | D.3. Since draft-ietf-httpbis-semantics-01 . . . . . . . . . . 196 | |||
| D.4. Since draft-ietf-httpbis-semantics-02 . . . . . . . . . . 196 | D.4. Since draft-ietf-httpbis-semantics-02 . . . . . . . . . . 197 | |||
| D.5. Since draft-ietf-httpbis-semantics-03 . . . . . . . . . . 197 | D.5. Since draft-ietf-httpbis-semantics-03 . . . . . . . . . . 198 | |||
| D.6. Since draft-ietf-httpbis-semantics-04 . . . . . . . . . . 198 | D.6. Since draft-ietf-httpbis-semantics-04 . . . . . . . . . . 199 | |||
| D.7. Since draft-ietf-httpbis-semantics-05 . . . . . . . . . . 198 | D.7. Since draft-ietf-httpbis-semantics-05 . . . . . . . . . . 199 | |||
| D.8. Since draft-ietf-httpbis-semantics-06 . . . . . . . . . . 199 | D.8. Since draft-ietf-httpbis-semantics-06 . . . . . . . . . . 201 | |||
| D.9. Since draft-ietf-httpbis-semantics-07 . . . . . . . . . . 201 | D.9. Since draft-ietf-httpbis-semantics-07 . . . . . . . . . . 202 | |||
| D.10. Since draft-ietf-httpbis-semantics-08 . . . . . . . . . . 202 | D.10. Since draft-ietf-httpbis-semantics-08 . . . . . . . . . . 203 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 | D.11. Since draft-ietf-httpbis-semantics-09 . . . . . . . . . . 204 | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 213 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 205 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 214 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 205 | |||
| 1. Introduction | 1. Introduction | |||
| The Hypertext Transfer Protocol (HTTP) is a stateless application- | The Hypertext Transfer Protocol (HTTP) is a stateless application- | |||
| level request/response protocol that uses extensible semantics and | level request/response protocol that uses extensible semantics and | |||
| self-descriptive messages for flexible interaction with network-based | self-descriptive messages for flexible interaction with network-based | |||
| hypertext information systems. HTTP is defined by a series of | hypertext information systems. HTTP is defined by a series of | |||
| documents that collectively form the HTTP/1.1 specification: | documents that collectively form the HTTP/1.1 specification: | |||
| o "HTTP Semantics" (this document) | o "HTTP Semantics" (this document) | |||
| skipping to change at page 12, line 21 ¶ | skipping to change at page 12, line 30 ¶ | |||
| Most HTTP communication consists of a retrieval request (GET) for a | Most HTTP communication consists of a retrieval request (GET) for a | |||
| representation of some resource identified by a URI. In the simplest | representation of some resource identified by a URI. In the simplest | |||
| case, this might be accomplished via a single bidirectional | case, this might be accomplished via a single bidirectional | |||
| connection (===) between the user agent (UA) and the origin server | connection (===) between the user agent (UA) and the origin server | |||
| (O). | (O). | |||
| request > | request > | |||
| UA ======================================= O | UA ======================================= O | |||
| < response | < response | |||
| Figure 1 | ||||
| Each major version of HTTP defines its own syntax for the inclusion | Each major version of HTTP defines its own syntax for the inclusion | |||
| of information in messages. Nevertheless, a common abstraction is | of information in messages. Nevertheless, a common abstraction is | |||
| that a message includes some form of envelope/framing, a potential | that a message includes some form of envelope/framing, a potential | |||
| set of named fields up front (a header section), a potential body, | set of named fields up front (a header section), a potential body, | |||
| and a potential following set of named fields (a trailer section). | and a potential following set of named fields (a trailer section). | |||
| A client sends an HTTP request to a server in the form of a request | A client sends an HTTP request to a server in the form of a request | |||
| message with a method (Section 8) and request target. The request | message with a method (Section 8) and request target. The request | |||
| might also contain header fields for request modifiers, client | might also contain header fields for request modifiers, client | |||
| information, and representation metadata (Section 5), a payload body | information, and representation metadata (Section 5), a payload body | |||
| skipping to change at page 13, line 49 ¶ | skipping to change at page 14, line 17 ¶ | |||
| HTTP enables the use of intermediaries to satisfy requests through a | HTTP enables the use of intermediaries to satisfy requests through a | |||
| chain of connections. There are three common forms of HTTP | chain of connections. There are three common forms of HTTP | |||
| intermediary: proxy, gateway, and tunnel. In some cases, a single | intermediary: proxy, gateway, and tunnel. In some cases, a single | |||
| intermediary might act as an origin server, proxy, gateway, or | intermediary might act as an origin server, proxy, gateway, or | |||
| tunnel, switching behavior based on the nature of each request. | tunnel, switching behavior based on the nature of each request. | |||
| > > > > | > > > > | |||
| UA =========== A =========== B =========== C =========== O | UA =========== A =========== B =========== C =========== O | |||
| < < < < | < < < < | |||
| Figure 2 | ||||
| The figure above shows three intermediaries (A, B, and C) between the | The figure above shows three intermediaries (A, B, and C) between the | |||
| user agent and origin server. A request or response message that | user agent and origin server. A request or response message that | |||
| travels the whole chain will pass through four separate connections. | travels the whole chain will pass through four separate connections. | |||
| Some HTTP communication options might apply only to the connection | Some HTTP communication options might apply only to the connection | |||
| with the nearest, non-tunnel neighbor, only to the endpoints of the | with the nearest, non-tunnel neighbor, only to the endpoints of the | |||
| chain, or to all connections along the chain. Although the diagram | chain, or to all connections along the chain. Although the diagram | |||
| is linear, each participant might be engaged in multiple, | is linear, each participant might be engaged in multiple, | |||
| simultaneous communications. For example, B might be receiving | simultaneous communications. For example, B might be receiving | |||
| requests from many clients other than A, and/or forwarding requests | requests from many clients other than A, and/or forwarding requests | |||
| to servers other than C, at the same time that it is handling A's | to servers other than C, at the same time that it is handling A's | |||
| skipping to change at page 16, line 15 ¶ | skipping to change at page 16, line 29 ¶ | |||
| The effect of a cache is that the request/response chain is shortened | The effect of a cache is that the request/response chain is shortened | |||
| if one of the participants along the chain has a cached response | if one of the participants along the chain has a cached response | |||
| applicable to that request. The following illustrates the resulting | applicable to that request. The following illustrates the resulting | |||
| chain if B has a cached copy of an earlier response from O (via C) | chain if B has a cached copy of an earlier response from O (via C) | |||
| for a request that has not been cached by UA or A. | for a request that has not been cached by UA or A. | |||
| > > | > > | |||
| UA =========== A =========== B - - - - - - C - - - - - - O | UA =========== A =========== B - - - - - - C - - - - - - O | |||
| < < | < < | |||
| Figure 3 | ||||
| A response is "cacheable" if a cache is allowed to store a copy of | A response is "cacheable" if a cache is allowed to store a copy of | |||
| the response message for use in answering subsequent requests. Even | the response message for use in answering subsequent requests. Even | |||
| when a response is cacheable, there might be additional constraints | when a response is cacheable, there might be additional constraints | |||
| placed by the client or by the origin server on when that cached | placed by the client or by the origin server on when that cached | |||
| response can be used for a particular request. HTTP requirements for | response can be used for a particular request. HTTP requirements for | |||
| cache behavior and cacheable responses are defined in Section 2 of | cache behavior and cacheable responses are defined in Section 2 of | |||
| [Caching]. | [Caching]. | |||
| There is a wide variety of architectures and configurations of caches | There is a wide variety of architectures and configurations of caches | |||
| deployed across the World Wide Web and inside large organizations. | deployed across the World Wide Web and inside large organizations. | |||
| skipping to change at page 18, line 7 ¶ | skipping to change at page 18, line 19 ¶ | |||
| the method semantics and any semantic implied by the URI itself, as | the method semantics and any semantic implied by the URI itself, as | |||
| described in Section 8.2.1, the method semantics take precedence. | described in Section 8.2.1, the method semantics take precedence. | |||
| IANA maintains the registry of URI Schemes [BCP35] at | IANA maintains the registry of URI Schemes [BCP35] at | |||
| <https://www.iana.org/assignments/uri-schemes/>. Although requests | <https://www.iana.org/assignments/uri-schemes/>. Although requests | |||
| might target any URI scheme, the following schemes are inherent to | might target any URI scheme, the following schemes are inherent to | |||
| HTTP servers: | HTTP servers: | |||
| +------------+------------------------------------+---------------+ | +------------+------------------------------------+---------------+ | |||
| | URI Scheme | Description | Reference | | | URI Scheme | Description | Reference | | |||
| +------------+------------------------------------+---------------+ | ||||
| | http | Hypertext Transfer Protocol | Section 2.5.1 | | | http | Hypertext Transfer Protocol | Section 2.5.1 | | |||
| | https | Hypertext Transfer Protocol Secure | Section 2.5.2 | | | https | Hypertext Transfer Protocol Secure | Section 2.5.2 | | |||
| +------------+------------------------------------+---------------+ | +------------+------------------------------------+---------------+ | |||
| Table 1 | ||||
| Note that the presence of an "http" or "https" URI does not imply | Note that the presence of an "http" or "https" URI does not imply | |||
| that there is always an HTTP server at the identified origin | that there is always an HTTP server at the identified origin | |||
| listening for connections. Anyone can mint a URI, whether or not a | listening for connections. Anyone can mint a URI, whether or not a | |||
| server exists and whether or not that server currently maps that | server exists and whether or not that server currently maps that | |||
| identifier to a resource. The delegated nature of registered names | identifier to a resource. The delegated nature of registered names | |||
| and IP addresses creates a federated namespace whether or not an HTTP | and IP addresses creates a federated namespace whether or not an HTTP | |||
| server is present. | server is present. | |||
| 2.5.1. http URI Scheme | 2.5.1. http URI Scheme | |||
| skipping to change at page 20, line 44 ¶ | skipping to change at page 21, line 15 ¶ | |||
| 2.5.5. Fragment Identifiers on http(s) URI References | 2.5.5. Fragment Identifiers on http(s) URI References | |||
| Fragment identifiers allow for indirect identification of a secondary | Fragment identifiers allow for indirect identification of a secondary | |||
| resource, independent of the URI scheme, as defined in Section 3.5 of | resource, independent of the URI scheme, as defined in Section 3.5 of | |||
| [RFC3986]. Some protocol elements that refer to a URI allow | [RFC3986]. Some protocol elements that refer to a URI allow | |||
| inclusion of a fragment, while others do not. They are distinguished | inclusion of a fragment, while others do not. They are distinguished | |||
| by use of the ABNF rule for elements where fragment is allowed; | by use of the ABNF rule for elements where fragment is allowed; | |||
| otherwise, a specific rule that excludes fragments is used (see | otherwise, a specific rule that excludes fragments is used (see | |||
| Section 6.1). | Section 6.1). | |||
| Note: the fragment identifier component is not part of the actual | | *Note:* the fragment identifier component is not part of the | |||
| scheme definition for a URI scheme (see Section 4.3 of [RFC3986]), | | actual scheme definition for a URI scheme (see Section 4.3 of | |||
| thus does not appear in the ABNF definitions for the "http" and | | [RFC3986]), thus does not appear in the ABNF definitions for | |||
| "https" URI schemes above. | | the "http" and "https" URI schemes above. | |||
| 3. Conformance | 3. Conformance | |||
| 3.1. Implementation Diversity | 3.1. Implementation Diversity | |||
| When considering the design of HTTP, it is easy to fall into a trap | When considering the design of HTTP, it is easy to fall into a trap | |||
| of thinking that all user agents are general-purpose browsers and all | of thinking that all user agents are general-purpose browsers and all | |||
| origin servers are large public websites. That is not the case in | origin servers are large public websites. That is not the case in | |||
| practice. Common HTTP user agents include household appliances, | practice. Common HTTP user agents include household appliances, | |||
| stereos, scales, firmware update scripts, command-line programs, | stereos, scales, firmware update scripts, command-line programs, | |||
| skipping to change at page 23, line 12 ¶ | skipping to change at page 23, line 40 ¶ | |||
| its own resources needs to be able to parse and process those same | its own resources needs to be able to parse and process those same | |||
| references when received as a target URI. | references when received as a target URI. | |||
| 3.4. Error Handling | 3.4. Error Handling | |||
| A recipient MUST interpret a received protocol element according to | A recipient MUST interpret a received protocol element according to | |||
| the semantics defined for it by this specification, including | the semantics defined for it by this specification, including | |||
| extensions to this specification, unless the recipient has determined | extensions to this specification, unless the recipient has determined | |||
| (through experience or configuration) that the sender incorrectly | (through experience or configuration) that the sender incorrectly | |||
| implements what is implied by those semantics. For example, an | implements what is implied by those semantics. For example, an | |||
| origin server might disregard the contents of a received Accept- | origin server might disregard the contents of a received | |||
| Encoding header field if inspection of the User-Agent header field | Accept-Encoding header field if inspection of the User-Agent header | |||
| indicates a specific implementation version that is known to fail on | field indicates a specific implementation version that is known to | |||
| receipt of certain content codings. | fail on receipt of certain content codings. | |||
| Unless noted otherwise, a recipient MAY attempt to recover a usable | Unless noted otherwise, a recipient MAY attempt to recover a usable | |||
| protocol element from an invalid construct. HTTP does not define | protocol element from an invalid construct. HTTP does not define | |||
| specific error handling mechanisms except when they have a direct | specific error handling mechanisms except when they have a direct | |||
| impact on security, since different applications of the protocol | impact on security, since different applications of the protocol | |||
| require different error handling strategies. For example, a Web | require different error handling strategies. For example, a Web | |||
| browser might wish to transparently recover from a response where the | browser might wish to transparently recover from a response where the | |||
| Location header field doesn't parse according to the ABNF, whereas a | Location header field doesn't parse according to the ABNF, whereas a | |||
| systems control client might consider any form of error recovery to | systems control client might consider any form of error recovery to | |||
| be dangerous. | be dangerous. | |||
| skipping to change at page 27, line 22 ¶ | skipping to change at page 28, line 19 ¶ | |||
| This means that, aside from the well-known exception noted below, a | This means that, aside from the well-known exception noted below, a | |||
| sender MUST NOT generate multiple field lines with the same name in a | sender MUST NOT generate multiple field lines with the same name in a | |||
| message (whether in the headers or trailers), or append a field line | message (whether in the headers or trailers), or append a field line | |||
| when a field line of the same name already exists in the message, | when a field line of the same name already exists in the message, | |||
| unless that field's definition allows multiple field line values to | unless that field's definition allows multiple field line values to | |||
| be recombined as a comma-separated list [i.e., at least one | be recombined as a comma-separated list [i.e., at least one | |||
| alternative of the field's definition allows a comma-separated list, | alternative of the field's definition allows a comma-separated list, | |||
| such as an ABNF rule of #(values) defined in Section 5.5]. | such as an ABNF rule of #(values) defined in Section 5.5]. | |||
| Note: In practice, the "Set-Cookie" header field ([RFC6265]) often | | *Note:* In practice, the "Set-Cookie" header field ([RFC6265]) | |||
| appears in a response message across multiple field lines and does | | often appears in a response message across multiple field lines | |||
| not use the list syntax, violating the above requirements on | | and does not use the list syntax, violating the above | |||
| multiple field lines with the same field name. Since it cannot be | | requirements on multiple field lines with the same field name. | |||
| combined into a single field value, recipients ought to handle | | Since it cannot be combined into a single field value, | |||
| "Set-Cookie" as a special case while processing fields. (See | | recipients ought to handle "Set-Cookie" as a special case while | |||
| Appendix A.2.3 of [Kri2001] for details.) | | processing fields. (See Appendix A.2.3 of [Kri2001] for | |||
| | details.) | ||||
| 5.2. Field Limits | 5.2. Field Limits | |||
| HTTP does not place a predefined limit on the length of each field | HTTP does not place a predefined limit on the length of each field | |||
| line, field value, or on the length of the header or trailer section | line, field value, or on the length of the header or trailer section | |||
| as a whole, as described in Section 3. Various ad hoc limitations on | as a whole, as described in Section 3. Various ad hoc limitations on | |||
| individual lengths are found in practice, often depending on the | individual lengths are found in practice, often depending on the | |||
| specific field's semantics. | specific field's semantics. | |||
| A server that receives a request header field line, field value, or | A server that receives a request header field line, field value, or | |||
| skipping to change at page 30, line 13 ¶ | skipping to change at page 31, line 13 ¶ | |||
| Comments: Additional information, such as about reserved entries. | Comments: Additional information, such as about reserved entries. | |||
| The Expert(s) can define additional fields to be collected in the | The Expert(s) can define additional fields to be collected in the | |||
| registry, in consultation with the community. | registry, in consultation with the community. | |||
| Standards-defined names have a status of "permanent". Other names | Standards-defined names have a status of "permanent". Other names | |||
| can also be registered as permanent, if the Expert(s) find that they | can also be registered as permanent, if the Expert(s) find that they | |||
| are in use, in consultation with the community. Other names should | are in use, in consultation with the community. Other names should | |||
| be registered as "provisional". | be registered as "provisional". | |||
| Provisional entries can be removed by the Expert(s) if -- in | Provisional entries can be removed by the Expert(s) if - in | |||
| consultation with the community -- the Expert(s) find that they are | consultation with the community - the Expert(s) find that they are | |||
| not in use. The Experts can change a provisional entry's status to | not in use. The Experts can change a provisional entry's status to | |||
| permanent at any time. | permanent at any time. | |||
| Note that names can be registered by third parties (including the | Note that names can be registered by third parties (including the | |||
| Expert(s)), if the Expert(s) determines that an unregistered name is | Expert(s)), if the Expert(s) determines that an unregistered name is | |||
| widely deployed and not likely to be registered in a timely manner | widely deployed and not likely to be registered in a timely manner | |||
| otherwise. | otherwise. | |||
| 5.4. Field Values | 5.4. Field Values | |||
| skipping to change at page 31, line 37 ¶ | skipping to change at page 32, line 37 ¶ | |||
| a parameter value ought to be the same whether it was received as a | a parameter value ought to be the same whether it was received as a | |||
| token or a quoted string. | token or a quoted string. | |||
| Historically, HTTP field values could be extended over multiple lines | Historically, HTTP field values could be extended over multiple lines | |||
| by preceding each extra line with at least one space or horizontal | by preceding each extra line with at least one space or horizontal | |||
| tab (obs-fold). This document assumes that any such obsolete line | tab (obs-fold). This document assumes that any such obsolete line | |||
| folding has been replaced with one or more SP octets prior to | folding has been replaced with one or more SP octets prior to | |||
| interpreting the field value, as described in Section 5.2 of | interpreting the field value, as described in Section 5.2 of | |||
| [Messaging]. | [Messaging]. | |||
| Note: This specification does not use ABNF rules to define each | | *Note:* This specification does not use ABNF rules to define | |||
| "Field Name: Field Value" pair, as was done in earlier editions | | each "Field Name: Field Value" pair, as was done in earlier | |||
| (published before [RFC7230]). Instead, ABNF rules are named | | editions (published before [RFC7230]). Instead, ABNF rules are | |||
| according to each registered field name, wherein the rule defines | | named according to each registered field name, wherein the rule | |||
| the valid grammar for that field's corresponding field values | | defines the valid grammar for that field's corresponding field | |||
| (i.e., after the field value has been extracted by a generic field | | values (i.e., after the field value has been extracted by a | |||
| parser). | | generic field parser). | |||
| 5.4.1. Common Field Value Components | 5.4.1. Common Field Value Components | |||
| Many HTTP field values are defined using common syntax components, | Many HTTP field values are defined using common syntax components, | |||
| separated by whitespace or specific delimiting characters. | separated by whitespace or specific delimiting characters. | |||
| Delimiters are chosen from the set of US-ASCII visual characters not | Delimiters are chosen from the set of US-ASCII visual characters not | |||
| allowed in a token (DQUOTE and "(),/:;<=>?@[\]{}"). | allowed in a token (DQUOTE and "(),/:;<=>?@[\]{}"). | |||
| 5.4.1.1. Tokens | 5.4.1.1. Tokens | |||
| skipping to change at page 33, line 21 ¶ | skipping to change at page 34, line 26 ¶ | |||
| Parameter names are case-insensitive. Parameter values might or | Parameter names are case-insensitive. Parameter values might or | |||
| might not be case-sensitive, depending on the semantics of the | might not be case-sensitive, depending on the semantics of the | |||
| parameter name. Examples of parameters and some equivalent forms can | parameter name. Examples of parameters and some equivalent forms can | |||
| be seen in media types (Section 7.1.1) and the Accept header field | be seen in media types (Section 7.1.1) and the Accept header field | |||
| (Section 9.4.1). | (Section 9.4.1). | |||
| A parameter value that matches the token production can be | A parameter value that matches the token production can be | |||
| transmitted either as a token or within a quoted-string. The quoted | transmitted either as a token or within a quoted-string. The quoted | |||
| and unquoted values are equivalent. | and unquoted values are equivalent. | |||
| Note: Parameters do not allow whitespace (not even "bad" | | *Note:* Parameters do not allow whitespace (not even "bad" | |||
| whitespace) around the "=" character. | | whitespace) around the "=" character. | |||
| 5.4.1.5. Date/Time Formats | 5.4.1.5. Date/Time Formats | |||
| Prior to 1995, there were three different formats commonly used by | Prior to 1995, there were three different formats commonly used by | |||
| servers to communicate timestamps. For compatibility with old | servers to communicate timestamps. For compatibility with old | |||
| implementations, all three are defined here. The preferred format is | implementations, all three are defined here. The preferred format is | |||
| a fixed-length and single-zone subset of the date and time | a fixed-length and single-zone subset of the date and time | |||
| specification used by the Internet Message Format [RFC5322]. | specification used by the Internet Message Format [RFC5322]. | |||
| HTTP-date = IMF-fixdate / obs-date | HTTP-date = IMF-fixdate / obs-date | |||
| skipping to change at page 35, line 4 ¶ | skipping to change at page 36, line 11 ¶ | |||
| day-name-l = %s"Monday" / %s"Tuesday" / %s"Wednesday" | day-name-l = %s"Monday" / %s"Tuesday" / %s"Wednesday" | |||
| / %s"Thursday" / %s"Friday" / %s"Saturday" / %s"Sunday" | / %s"Thursday" / %s"Friday" / %s"Saturday" / %s"Sunday" | |||
| asctime-date = day-name SP date3 SP time-of-day SP year | asctime-date = day-name SP date3 SP time-of-day SP year | |||
| date3 = month SP ( 2DIGIT / ( SP 1DIGIT )) | date3 = month SP ( 2DIGIT / ( SP 1DIGIT )) | |||
| ; e.g., Jun 2 | ; e.g., Jun 2 | |||
| HTTP-date is case sensitive. A sender MUST NOT generate additional | HTTP-date is case sensitive. A sender MUST NOT generate additional | |||
| whitespace in an HTTP-date beyond that specifically included as SP in | whitespace in an HTTP-date beyond that specifically included as SP in | |||
| the grammar. The semantics of day-name, day, month, year, and time- | the grammar. The semantics of day-name, day, month, year, and | |||
| of-day are the same as those defined for the Internet Message Format | time-of-day are the same as those defined for the Internet Message | |||
| constructs with the corresponding name ([RFC5322], Section 3.3). | Format constructs with the corresponding name ([RFC5322], | |||
| Section 3.3). | ||||
| Recipients of a timestamp value in rfc850-date format, which uses a | Recipients of a timestamp value in rfc850-date format, which uses a | |||
| two-digit year, MUST interpret a timestamp that appears to be more | two-digit year, MUST interpret a timestamp that appears to be more | |||
| than 50 years in the future as representing the most recent year in | than 50 years in the future as representing the most recent year in | |||
| the past that had the same last two digits. | the past that had the same last two digits. | |||
| Recipients of timestamp values are encouraged to be robust in parsing | Recipients of timestamp values are encouraged to be robust in parsing | |||
| timestamps unless otherwise restricted by the field definition. For | timestamps unless otherwise restricted by the field definition. For | |||
| example, messages are occasionally forwarded over HTTP from a non- | example, messages are occasionally forwarded over HTTP from a non- | |||
| HTTP source that might generate any of the date and time | HTTP source that might generate any of the date and time | |||
| specifications defined by the Internet Message Format. | specifications defined by the Internet Message Format. | |||
| Note: HTTP requirements for the date/time stamp format apply only | | *Note:* HTTP requirements for the date/time stamp format apply | |||
| to their usage within the protocol stream. Implementations are | | only to their usage within the protocol stream. | |||
| not required to use these formats for user presentation, request | | Implementations are not required to use these formats for user | |||
| logging, etc. | | presentation, request logging, etc. | |||
| 5.5. ABNF List Extension: #rule | 5.5. ABNF List Extension: #rule | |||
| A #rule extension to the ABNF rules of [RFC5234] is used to improve | A #rule extension to the ABNF rules of [RFC5234] is used to improve | |||
| readability in the definitions of some list-based field values. | readability in the definitions of some list-based field values. | |||
| A construct "#" is defined, similar to "*", for defining comma- | A construct "#" is defined, similar to "*", for defining comma- | |||
| delimited lists of elements. The full form is "<n>#<m>element" | delimited lists of elements. The full form is "<n>#<m>element" | |||
| indicating at least <n> and at most <m> elements, each separated by a | indicating at least <n> and at most <m> elements, each separated by a | |||
| single comma (",") and optional whitespace (OWS). | single comma (",") and optional whitespace (OWS). | |||
| skipping to change at page 40, line 5 ¶ | skipping to change at page 41, line 5 ¶ | |||
| o Whether the field ought to be preserved across redirects. | o Whether the field ought to be preserved across redirects. | |||
| o Whether it introduces any additional security considerations, such | o Whether it introduces any additional security considerations, such | |||
| as disclosure of privacy-related data. | as disclosure of privacy-related data. | |||
| 5.8. Fields Defined In This Document | 5.8. Fields Defined In This Document | |||
| The following fields are defined by this document: | The following fields are defined by this document: | |||
| +---------------------------+------------+-----------------+ | +---------------------------+------------+----------------+ | |||
| | Field Name | Status | Reference | | | Field Name | Status | Reference | | |||
| +---------------------------+------------+-----------------+ | | Accept | standard | Section 9.4.1 | | |||
| | Accept | standard | Section 9.4.1 | | | Accept-Charset | deprecated | Section 9.4.2 | | |||
| | Accept-Charset | deprecated | Section 9.4.2 | | | Accept-Encoding | standard | Section 9.4.3 | | |||
| | Accept-Encoding | standard | Section 9.4.3 | | | Accept-Language | standard | Section 9.4.4 | | |||
| | Accept-Language | standard | Section 9.4.4 | | | Accept-Ranges | standard | Section 11.4.1 | | |||
| | Accept-Ranges | standard | Section 11.4.1 | | | Allow | standard | Section 11.4.2 | | |||
| | Allow | standard | Section 11.4.2 | | | Authentication-Info | standard | Section 11.3.3 | | |||
| | Authentication-Info | standard | Section 11.3.3 | | | Authorization | standard | Section 9.5.3 | | |||
| | Authorization | standard | Section 9.5.3 | | | Content-Encoding | standard | Section 7.2.2 | | |||
| | Content-Encoding | standard | Section 7.2.2 | | | Content-Language | standard | Section 7.2.3 | | |||
| | Content-Language | standard | Section 7.2.3 | | | Content-Length | standard | Section 7.2.4 | | |||
| | Content-Length | standard | Section 7.2.4 | | | Content-Location | standard | Section 7.2.5 | | |||
| | Content-Location | standard | Section 7.2.5 | | | Content-Range | standard | Section 7.3.4 | | |||
| | Content-Range | standard | Section 7.3.4 | | | Content-Type | standard | Section 7.2.1 | | |||
| | Content-Type | standard | Section 7.2.1 | | | Date | standard | Section 11.1.1 | | |||
| | Date | standard | Section 11.1.1 | | | ETag | standard | Section 11.2.3 | | |||
| | ETag | standard | Section 11.2.3 | | | Expect | standard | Section 9.1.1 | | |||
| | Expect | standard | Section 9.1.1 | | | From | standard | Section 9.6.1 | | |||
| | From | standard | Section 9.6.1 | | | Host | standard | Section 6.6 | | |||
| | Host | standard | Section 6.6 | | | If-Match | standard | Section 9.2.3 | | |||
| | If-Match | standard | Section 9.2.3 | | | If-Modified-Since | standard | Section 9.2.5 | | |||
| | If-Modified-Since | standard | Section 9.2.5 | | | If-None-Match | standard | Section 9.2.4 | | |||
| | If-None-Match | standard | Section 9.2.4 | | | If-Range | standard | Section 9.2.7 | | |||
| | If-Range | standard | Section 9.2.7 | | | If-Unmodified-Since | standard | Section 9.2.6 | | |||
| | If-Unmodified-Since | standard | Section 9.2.6 | | | Last-Modified | standard | Section 11.2.2 | | |||
| | Last-Modified | standard | Section 11.2.2 | | | Location | standard | Section 11.1.2 | | |||
| | Location | standard | Section 11.1.2 | | | Max-Forwards | standard | Section 9.1.2 | | |||
| | Max-Forwards | standard | Section 9.1.2 | | | Proxy-Authenticate | standard | Section 11.3.2 | | |||
| | Proxy-Authenticate | standard | Section 11.3.2 | | | Proxy-Authentication-Info | standard | Section 11.3.4 | | |||
| | Proxy-Authentication-Info | standard | Section 11.3.4 | | | Proxy-Authorization | standard | Section 9.5.4 | | |||
| | Proxy-Authorization | standard | Section 9.5.4 | | | Range | standard | Section 9.3 | | |||
| | Range | standard | Section 9.3 | | | Referer | standard | Section 9.6.2 | | |||
| | Referer | standard | Section 9.6.2 | | | Retry-After | standard | Section 11.1.3 | | |||
| | Retry-After | standard | Section 11.1.3 | | | Server | standard | Section 11.4.3 | | |||
| | Server | standard | Section 11.4.3 | | | Trailer | standard | Section 5.6.3 | | |||
| | Trailer | standard | Section 5.6.3 | | | User-Agent | standard | Section 9.6.3 | | |||
| | User-Agent | standard | Section 9.6.3 | | | Vary | standard | Section 11.1.4 | | |||
| | Vary | standard | Section 11.1.4 | | | Via | standard | Section 6.7.1 | | |||
| | Via | standard | Section 6.7.1 | | | WWW-Authenticate | standard | Section 11.3.1 | | |||
| | WWW-Authenticate | standard | Section 11.3.1 | | +---------------------------+------------+----------------+ | |||
| +---------------------------+------------+-----------------+ | ||||
| Table 1 | Table 2 | |||
| Furthermore, the field name "*" is reserved, since using that name as | Furthermore, the field name "*" is reserved, since using that name as | |||
| an HTTP header field might conflict with its special semantics in the | an HTTP header field might conflict with its special semantics in the | |||
| Vary header field (Section 11.1.4). | Vary header field (Section 11.1.4). | |||
| +------------+----------+--------------+-------------+ | +------------+----------+-------------+------------+ | |||
| | Field Name | Status | Reference | Comments | | | Field Name | Status | Reference | Comments | | |||
| +------------+----------+--------------+-------------+ | | * | standard | Section 5.8 | (reserved) | | |||
| | * | standard | Section 5.8 | (reserved) | | +------------+----------+-------------+------------+ | |||
| +------------+----------+--------------+-------------+ | ||||
| Table 3 | ||||
| 6. Message Routing | 6. Message Routing | |||
| HTTP request message routing is determined by each client based on | HTTP request message routing is determined by each client based on | |||
| the target resource, the client's proxy configuration, and | the target resource, the client's proxy configuration, and | |||
| establishment or reuse of an inbound connection. The corresponding | establishment or reuse of an inbound connection. The corresponding | |||
| response routing follows the same connection chain back to the | response routing follows the same connection chain back to the | |||
| client. | client. | |||
| 6.1. Identifying a Target Resource | 6.1. Identifying a Target Resource | |||
| skipping to change at page 47, line 47 ¶ | skipping to change at page 49, line 5 ¶ | |||
| connection in which the request was received. For example, the | connection in which the request was received. For example, the | |||
| request might have been misdirected, deliberately or accidentally, | request might have been misdirected, deliberately or accidentally, | |||
| such that the information within a received Host header field differs | such that the information within a received Host header field differs | |||
| from the host or port upon which the connection has been made. If | from the host or port upon which the connection has been made. If | |||
| the connection is from a trusted gateway, that inconsistency might be | the connection is from a trusted gateway, that inconsistency might be | |||
| expected; otherwise, it might indicate an attempt to bypass security | expected; otherwise, it might indicate an attempt to bypass security | |||
| filters, trick the server into delivering non-public content, or | filters, trick the server into delivering non-public content, or | |||
| poison a cache. See Section 12 for security considerations regarding | poison a cache. See Section 12 for security considerations regarding | |||
| message routing. | message routing. | |||
| Note: previous specifications defined the recomposed target URI as | | *Note:* previous specifications defined the recomposed target | |||
| a distinct concept, the effective request URI. | | URI as a distinct concept, the effective request URI. | |||
| 6.6. Host | 6.6. Host | |||
| The "Host" header field in a request provides the host and port | The "Host" header field in a request provides the host and port | |||
| information from the target URI, enabling the origin server to | information from the target URI, enabling the origin server to | |||
| distinguish among resources while servicing requests for multiple | distinguish among resources while servicing requests for multiple | |||
| host names on a single IP address. | host names on a single IP address. | |||
| Host = uri-host [ ":" port ] ; Section 2.4 | Host = uri-host [ ":" port ] ; Section 2.4 | |||
| skipping to change at page 53, line 51 ¶ | skipping to change at page 55, line 17 ¶ | |||
| HTTP uses charset names to indicate or negotiate the character | HTTP uses charset names to indicate or negotiate the character | |||
| encoding scheme of a textual representation [RFC6365]. A charset is | encoding scheme of a textual representation [RFC6365]. A charset is | |||
| identified by a case-insensitive token. | identified by a case-insensitive token. | |||
| charset = token | charset = token | |||
| Charset names ought to be registered in the IANA "Character Sets" | Charset names ought to be registered in the IANA "Character Sets" | |||
| registry (<https://www.iana.org/assignments/character-sets>) | registry (<https://www.iana.org/assignments/character-sets>) | |||
| according to the procedures defined in Section 2 of [RFC2978]. | according to the procedures defined in Section 2 of [RFC2978]. | |||
| Note: In theory, charset names are defined by the "mime-charset" | | *Note:* In theory, charset names are defined by the "mime- | |||
| ABNF rule defined in Section 2.3 of [RFC2978] (as corrected in | | charset" ABNF rule defined in Section 2.3 of [RFC2978] (as | |||
| | corrected in [Err1912]). That rule allows two characters that | ||||
| [Err1912]). That rule allows two characters that are not included | | are not included in "token" ("{" and "}"), but no charset name | |||
| in "token" ("{" and "}"), but no charset name registered at the | | registered at the time of this writing includes braces (see | |||
| time of this writing includes braces (see [Err5433]). | | [Err5433]). | |||
| 7.1.1.2. Canonicalization and Text Defaults | 7.1.1.2. Canonicalization and Text Defaults | |||
| Media types are registered with a canonical form in order to be | Media types are registered with a canonical form in order to be | |||
| interoperable among systems with varying native encoding formats. | interoperable among systems with varying native encoding formats. | |||
| Representations selected or transferred via HTTP ought to be in | Representations selected or transferred via HTTP ought to be in | |||
| canonical form, for many of the same reasons described by the | canonical form, for many of the same reasons described by the | |||
| Multipurpose Internet Mail Extensions (MIME) [RFC2045]. However, the | Multipurpose Internet Mail Extensions (MIME) [RFC2045]. However, the | |||
| performance characteristics of email deployments (i.e., store and | performance characteristics of email deployments (i.e., store and | |||
| forward messages to peers) are significantly different from those | forward messages to peers) are significantly different from those | |||
| skipping to change at page 54, line 41 ¶ | skipping to change at page 56, line 7 ¶ | |||
| regarding line breaks applies only to text within a representation | regarding line breaks applies only to text within a representation | |||
| that has been assigned a "text" media type; it does not apply to | that has been assigned a "text" media type; it does not apply to | |||
| "multipart" types or HTTP elements outside the payload body (e.g., | "multipart" types or HTTP elements outside the payload body (e.g., | |||
| header fields). | header fields). | |||
| If a representation is encoded with a content-coding, the underlying | If a representation is encoded with a content-coding, the underlying | |||
| data ought to be in a form defined above prior to being encoded. | data ought to be in a form defined above prior to being encoded. | |||
| 7.1.1.3. Multipart Types | 7.1.1.3. Multipart Types | |||
| MIME provides for a number of "multipart" types -- encapsulations of | MIME provides for a number of "multipart" types - encapsulations of | |||
| one or more representations within a single message body. All | one or more representations within a single message body. All | |||
| multipart types share a common syntax, as defined in Section 5.1.1 of | multipart types share a common syntax, as defined in Section 5.1.1 of | |||
| [RFC2046], and include a boundary parameter as part of the media type | [RFC2046], and include a boundary parameter as part of the media type | |||
| value. The message body is itself a protocol element; a sender MUST | value. The message body is itself a protocol element; a sender MUST | |||
| generate only CRLF to represent line breaks between body parts. | generate only CRLF to represent line breaks between body parts. | |||
| HTTP message framing does not use the multipart boundary as an | HTTP message framing does not use the multipart boundary as an | |||
| indicator of message body length, though it might be used by | indicator of message body length, though it might be used by | |||
| implementations that generate or process the payload. For example, | implementations that generate or process the payload. For example, | |||
| the "multipart/form-data" type is often used for carrying form data | the "multipart/form-data" type is often used for carrying form data | |||
| skipping to change at page 55, line 29 ¶ | skipping to change at page 57, line 5 ¶ | |||
| All content codings are case-insensitive and ought to be registered | All content codings are case-insensitive and ought to be registered | |||
| within the "HTTP Content Coding Registry", as defined in | within the "HTTP Content Coding Registry", as defined in | |||
| Section 7.1.2.4 | Section 7.1.2.4 | |||
| Content-coding values are used in the Accept-Encoding (Section 9.4.3) | Content-coding values are used in the Accept-Encoding (Section 9.4.3) | |||
| and Content-Encoding (Section 7.2.2) header fields. | and Content-Encoding (Section 7.2.2) header fields. | |||
| The following content-coding values are defined by this | The following content-coding values are defined by this | |||
| specification: | specification: | |||
| +------------+------------------------------------------+-----------+ | +------------+-------------------------------+-----------+ | |||
| | Name | Description | Reference | | | Name | Description | Reference | | |||
| +------------+------------------------------------------+-----------+ | | compress | UNIX "compress" data format | Section | | |||
| | compress | UNIX "compress" data format [Welch] | Section 7 | | | | [Welch] | 7.1.2.1 | | |||
| | | | .1.2.1 | | | deflate | "deflate" compressed data | Section | | |||
| | deflate | "deflate" compressed data ([RFC1951]) | Section 7 | | | | ([RFC1951]) inside the "zlib" | 7.1.2.2 | | |||
| | | inside the "zlib" data format | .1.2.2 | | | | data format ([RFC1950]) | | | |||
| | | ([RFC1950]) | | | | gzip | GZIP file format [RFC1952] | Section | | |||
| | gzip | GZIP file format [RFC1952] | Section 7 | | | | | 7.1.2.3 | | |||
| | | | .1.2.3 | | | identity | Reserved | Section | | |||
| | identity | Reserved | Section 9 | | | | | 9.4.3 | | |||
| | | | .4.3 | | | x-compress | Deprecated (alias for | Section | | |||
| | x-compress | Deprecated (alias for compress) | Section 7 | | | | compress) | 7.1.2.1 | | |||
| | | | .1.2.1 | | | x-gzip | Deprecated (alias for gzip) | Section | | |||
| | x-gzip | Deprecated (alias for gzip) | Section 7 | | | | | 7.1.2.3 | | |||
| | | | .1.2.3 | | +------------+-------------------------------+-----------+ | |||
| +------------+------------------------------------------+-----------+ | ||||
| Table 2 | Table 4 | |||
| 7.1.2.1. Compress Coding | 7.1.2.1. Compress Coding | |||
| The "compress" coding is an adaptive Lempel-Ziv-Welch (LZW) coding | The "compress" coding is an adaptive Lempel-Ziv-Welch (LZW) coding | |||
| [Welch] that is commonly produced by the UNIX file compression | [Welch] that is commonly produced by the UNIX file compression | |||
| program "compress". A recipient SHOULD consider "x-compress" to be | program "compress". A recipient SHOULD consider "x-compress" to be | |||
| equivalent to "compress". | equivalent to "compress". | |||
| 7.1.2.2. Deflate Coding | 7.1.2.2. Deflate Coding | |||
| The "deflate" coding is a "zlib" data format [RFC1950] containing a | The "deflate" coding is a "zlib" data format [RFC1950] containing a | |||
| "deflate" compressed data stream [RFC1951] that uses a combination of | "deflate" compressed data stream [RFC1951] that uses a combination of | |||
| the Lempel-Ziv (LZ77) compression algorithm and Huffman coding. | the Lempel-Ziv (LZ77) compression algorithm and Huffman coding. | |||
| Note: Some non-conformant implementations send the "deflate" | | *Note:* Some non-conformant implementations send the "deflate" | |||
| compressed data without the zlib wrapper. | | compressed data without the zlib wrapper. | |||
| 7.1.2.3. Gzip Coding | 7.1.2.3. Gzip Coding | |||
| The "gzip" coding is an LZ77 coding with a 32-bit Cyclic Redundancy | The "gzip" coding is an LZ77 coding with a 32-bit Cyclic Redundancy | |||
| Check (CRC) that is commonly produced by the gzip file compression | Check (CRC) that is commonly produced by the gzip file compression | |||
| program [RFC1952]. A recipient SHOULD consider "x-gzip" to be | program [RFC1952]. A recipient SHOULD consider "x-gzip" to be | |||
| equivalent to "gzip". | equivalent to "gzip". | |||
| 7.1.2.4. Content Coding Registry | 7.1.2.4. Content Coding Registry | |||
| skipping to change at page 57, line 12 ¶ | skipping to change at page 58, line 29 ¶ | |||
| Section 4.8 of [RFC8126]) and MUST conform to the purpose of content | Section 4.8 of [RFC8126]) and MUST conform to the purpose of content | |||
| coding defined in Section 7.1.2. | coding defined in Section 7.1.2. | |||
| 7.1.3. Language Tags | 7.1.3. Language Tags | |||
| A language tag, as defined in [RFC5646], identifies a natural | A language tag, as defined in [RFC5646], identifies a natural | |||
| language spoken, written, or otherwise conveyed by human beings for | language spoken, written, or otherwise conveyed by human beings for | |||
| communication of information to other human beings. Computer | communication of information to other human beings. Computer | |||
| languages are explicitly excluded. | languages are explicitly excluded. | |||
| HTTP uses language tags within the Accept-Language and Content- | HTTP uses language tags within the Accept-Language and | |||
| Language header fields. Accept-Language uses the broader language- | Content-Language header fields. Accept-Language uses the broader | |||
| range production defined in Section 9.4.4, whereas Content-Language | language-range production defined in Section 9.4.4, whereas | |||
| uses the language-tag production defined below. | Content-Language uses the language-tag production defined below. | |||
| language-tag = <Language-Tag, see [RFC5646], Section 2.1> | language-tag = <Language-Tag, see [RFC5646], Section 2.1> | |||
| A language tag is a sequence of one or more case-insensitive subtags, | A language tag is a sequence of one or more case-insensitive subtags, | |||
| each separated by a hyphen character ("-", %x2D). In most cases, a | each separated by a hyphen character ("-", %x2D). In most cases, a | |||
| language tag consists of a primary language subtag that identifies a | language tag consists of a primary language subtag that identifies a | |||
| broad family of related languages (e.g., "en" = English), which is | broad family of related languages (e.g., "en" = English), which is | |||
| optionally followed by a series of subtags that refine or narrow that | optionally followed by a series of subtags that refine or narrow that | |||
| language's range (e.g., "en-CA" = the variety of English as | language's range (e.g., "en-CA" = the variety of English as | |||
| communicated in Canada). Whitespace is not allowed within a language | communicated in Canada). Whitespace is not allowed within a language | |||
| skipping to change at page 57, line 44 ¶ | skipping to change at page 59, line 17 ¶ | |||
| Representation data can be partitioned into subranges when there are | Representation data can be partitioned into subranges when there are | |||
| addressable structural units inherent to that data's content coding | addressable structural units inherent to that data's content coding | |||
| or media type. For example, octet (a.k.a., byte) boundaries are a | or media type. For example, octet (a.k.a., byte) boundaries are a | |||
| structural unit common to all representation data, allowing | structural unit common to all representation data, allowing | |||
| partitions of the data to be identified as a range of bytes at some | partitions of the data to be identified as a range of bytes at some | |||
| offset from the start or end of that data. | offset from the start or end of that data. | |||
| This general notion of a "range unit" is used in the Accept-Ranges | This general notion of a "range unit" is used in the Accept-Ranges | |||
| (Section 11.4.1) response header field to advertise support for range | (Section 11.4.1) response header field to advertise support for range | |||
| requests, the Range (Section 9.3) request header field to delineate | requests, the Range (Section 9.3) request header field to delineate | |||
| the parts of a representation that are requested, and the Content- | the parts of a representation that are requested, and the | |||
| Range (Section 7.3.4) payload header field to describe which part of | Content-Range (Section 7.3.4) payload header field to describe which | |||
| a representation is being transferred. | part of a representation is being transferred. | |||
| range-unit = token | range-unit = token | |||
| All range unit names are case-insensitive and ought to be registered | All range unit names are case-insensitive and ought to be registered | |||
| within the "HTTP Range Unit Registry", as defined in Section 7.1.4.4 | within the "HTTP Range Unit Registry", as defined in Section 7.1.4.4 | |||
| The following range unit names are defined by this document: | The following range unit names are defined by this document: | |||
| +------------+-----------------------------------------+------------+ | +-----------------+----------------------------------+-----------+ | |||
| | Range Unit | Description | Reference | | | Range Unit Name | Description | Reference | | |||
| | Name | | | | | bytes | a range of octets | Section | | |||
| +------------+-----------------------------------------+------------+ | | | | 7.1.4.2 | | |||
| | bytes | a range of octets | Section 7. | | | none | reserved as keyword to indicate | Section | | |||
| | | | 1.4.2 | | | | range requests are not supported | 11.4.1 | | |||
| | none | reserved as keyword to indicate range | Section 11 | | +-----------------+----------------------------------+-----------+ | |||
| | | requests are not supported | .4.1 | | ||||
| +------------+-----------------------------------------+------------+ | ||||
| Table 3 | Table 5 | |||
| 7.1.4.1. Range Specifiers | 7.1.4.1. Range Specifiers | |||
| Ranges are expressed in terms of a range unit paired with a set of | Ranges are expressed in terms of a range unit paired with a set of | |||
| range specifiers. The range unit name determines what kinds of | range specifiers. The range unit name determines what kinds of | |||
| range-spec are applicable to its own specifiers. Hence, the | range-spec are applicable to its own specifiers. Hence, the | |||
| following gramar is generic: each range unit is expected to specify | following gramar is generic: each range unit is expected to specify | |||
| requirements on when int-range, suffix-range, and other-range are | requirements on when int-range, suffix-range, and other-range are | |||
| allowed. | allowed. | |||
| skipping to change at page 59, line 37 ¶ | skipping to change at page 61, line 14 ¶ | |||
| If the representation data has a content coding applied, each byte | If the representation data has a content coding applied, each byte | |||
| range is calculated with respect to the encoded sequence of bytes, | range is calculated with respect to the encoded sequence of bytes, | |||
| not the sequence of underlying bytes that would be obtained after | not the sequence of underlying bytes that would be obtained after | |||
| decoding. | decoding. | |||
| Examples of bytes range specifiers: | Examples of bytes range specifiers: | |||
| o The first 500 bytes (byte offsets 0-499, inclusive): | o The first 500 bytes (byte offsets 0-499, inclusive): | |||
| bytes=0-499 | bytes=0-499 | |||
| o The second 500 bytes (byte offsets 500-999, inclusive): | o The second 500 bytes (byte offsets 500-999, inclusive): | |||
| bytes=500-999 | bytes=500-999 | |||
| A client can limit the number of bytes requested without knowing the | A client can limit the number of bytes requested without knowing the | |||
| size of the selected representation. If the last-pos value is | size of the selected representation. If the last-pos value is | |||
| absent, or if the value is greater than or equal to the current | absent, or if the value is greater than or equal to the current | |||
| length of the representation data, the byte range is interpreted as | length of the representation data, the byte range is interpreted as | |||
| the remainder of the representation (i.e., the server replaces the | the remainder of the representation (i.e., the server replaces the | |||
| value of last-pos with a value that is one less than the current | value of last-pos with a value that is one less than the current | |||
| length of the selected representation). | length of the selected representation). | |||
| A client can request the last N bytes (N > 0) of the selected | A client can request the last N bytes (N > 0) of the selected | |||
| representation using a suffix-range. If the selected representation | representation using a suffix-range. If the selected representation | |||
| is shorter than the specified suffix-length, the entire | is shorter than the specified suffix-length, the entire | |||
| representation is used. | representation is used. | |||
| Additional examples, assuming a representation of length 10000: | Additional examples, assuming a representation of length 10000: | |||
| o The final 500 bytes (byte offsets 9500-9999, inclusive): | o The final 500 bytes (byte offsets 9500-9999, inclusive): | |||
| bytes=-500 | bytes=-500 | |||
| Or: | Or: | |||
| bytes=9500- | bytes=9500- | |||
| o The first and last bytes only (bytes 0 and 9999): | o The first and last bytes only (bytes 0 and 9999): | |||
| bytes=0-0,-1 | bytes=0-0,-1 | |||
| o The first, middle, and last 1000 bytes: | o The first, middle, and last 1000 bytes: | |||
| bytes= 0-999, 4500-5499, -1000 | bytes= 0-999, 4500-5499, -1000 | |||
| o Other valid (but not canonical) specifications of the second 500 | o Other valid (but not canonical) specifications of the second 500 | |||
| bytes (byte offsets 500-999, inclusive): | bytes (byte offsets 500-999, inclusive): | |||
| bytes=500-600,601-999 | bytes=500-600,601-999 | |||
| bytes=500-700,601-999 | bytes=500-700,601-999 | |||
| If a valid bytes range-set includes at least one range-spec with a | If a valid bytes range-set includes at least one range-spec with a | |||
| first-pos that is less than the current length of the representation, | first-pos that is less than the current length of the representation, | |||
| or at least one suffix-range with a non-zero suffix-length, then the | or at least one suffix-range with a non-zero suffix-length, then the | |||
| bytes range-set is satisfiable. Otherwise, the bytes range-set is | bytes range-set is satisfiable. Otherwise, the bytes range-set is | |||
| unsatisfiable. | unsatisfiable. | |||
| If the selected representation has zero length, the only satisfiable | If the selected representation has zero length, the only satisfiable | |||
| form of range-spec is a suffix-range with a non-zero suffix-length. | form of range-spec is a suffix-range with a non-zero suffix-length. | |||
| skipping to change at page 62, line 7 ¶ | skipping to change at page 63, line 19 ¶ | |||
| 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. | |||
| The following header fields convey representation metadata: | The following header fields convey representation metadata: | |||
| +------------------+---------------+ | +------------------+---------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +------------------+---------------+ | ||||
| | Content-Type | Section 7.2.1 | | | Content-Type | Section 7.2.1 | | |||
| | Content-Encoding | Section 7.2.2 | | | Content-Encoding | Section 7.2.2 | | |||
| | Content-Language | Section 7.2.3 | | | Content-Language | Section 7.2.3 | | |||
| | Content-Length | Section 7.2.4 | | | Content-Length | Section 7.2.4 | | |||
| | Content-Location | Section 7.2.5 | | | Content-Location | Section 7.2.5 | | |||
| +------------------+---------------+ | +------------------+---------------+ | |||
| Table 6 | ||||
| 7.2.1. Content-Type | 7.2.1. Content-Type | |||
| The "Content-Type" header field indicates the media type of the | The "Content-Type" header field indicates the media type of the | |||
| associated representation: either the representation enclosed in the | associated representation: either the representation enclosed in the | |||
| message payload or the selected representation, as determined by the | message payload or the selected representation, as determined by the | |||
| message semantics. The indicated media type defines both the data | message semantics. The indicated media type defines both the data | |||
| format and how that data is intended to be processed by a recipient, | format and how that data is intended to be processed by a recipient, | |||
| within the scope of the received message semantics, after any content | within the scope of the received message semantics, after any content | |||
| codings indicated by Content-Encoding are decoded. | codings indicated by Content-Encoding are decoded. | |||
| skipping to change at page 64, line 45 ¶ | skipping to change at page 66, line 8 ¶ | |||
| Content-Language: mi, en | Content-Language: mi, en | |||
| However, just because multiple languages are present within a | However, just because multiple languages are present within a | |||
| representation does not mean that it is intended for multiple | representation does not mean that it is intended for multiple | |||
| linguistic audiences. An example would be a beginner's language | linguistic audiences. An example would be a beginner's language | |||
| primer, such as "A First Lesson in Latin", which is clearly intended | primer, such as "A First Lesson in Latin", which is clearly intended | |||
| to be used by an English-literate audience. In this case, the | to be used by an English-literate audience. In this case, the | |||
| Content-Language would properly only include "en". | Content-Language would properly only include "en". | |||
| Content-Language MAY be applied to any media type -- it is not | Content-Language MAY be applied to any media type - it is not limited | |||
| limited to textual documents. | to textual documents. | |||
| 7.2.4. Content-Length | 7.2.4. Content-Length | |||
| [[CREF1: The "Content-Length" header field indicates the number of | // The "Content-Length" header field indicates the number of data | |||
| data octets (body length) for the representation. In some cases, | // octets (body length) for the representation. In some cases, | |||
| Content-Length is used to define or estimate message framing. ]] | // Content-Length is used to define or estimate message framing. | |||
| Content-Length = 1*DIGIT | Content-Length = 1*DIGIT | |||
| An example is | An example is | |||
| Content-Length: 3495 | Content-Length: 3495 | |||
| A sender MUST NOT send a Content-Length header field in any message | A sender MUST NOT send a Content-Length header field in any message | |||
| that contains a Transfer-Encoding header field. | that contains a Transfer-Encoding header field. | |||
| A user agent SHOULD send a Content-Length in a request message when | A user agent SHOULD send a Content-Length in a request message when | |||
| skipping to change at page 66, line 7 ¶ | skipping to change at page 67, line 20 ¶ | |||
| potentially reuse the connection for additional requests. | potentially reuse the connection for additional requests. | |||
| Any Content-Length field value greater than or equal to zero is | Any Content-Length field value greater than or equal to zero is | |||
| valid. Since there is no predefined limit to the length of a | valid. Since there is no predefined limit to the length of a | |||
| payload, a recipient MUST anticipate potentially large decimal | payload, a recipient MUST anticipate potentially large decimal | |||
| numerals and prevent parsing errors due to integer conversion | numerals and prevent parsing errors due to integer conversion | |||
| overflows (Section 12.5). | overflows (Section 12.5). | |||
| If a message is received that has a Content-Length header field value | If a message is received that has a Content-Length header field value | |||
| consisting of the same decimal value as a comma-separated list | consisting of the same decimal value as a comma-separated list | |||
| (Section 5.5) -- for example, "Content-Length: 42, 42" -- indicating | (Section 5.5) - for example, "Content-Length: 42, 42" - indicating | |||
| that duplicate Content-Length header fields have been generated or | that duplicate Content-Length header fields have been generated or | |||
| combined by an upstream message processor, then the recipient MUST | combined by an upstream message processor, then the recipient MUST | |||
| either reject the message as invalid or replace the duplicated field | either reject the message as invalid or replace the duplicated field | |||
| values with a single valid Content-Length field containing that | values with a single valid Content-Length field containing that | |||
| decimal value prior to determining the message body length or | decimal value prior to determining the message body length or | |||
| forwarding the message. | forwarding the message. | |||
| 7.2.5. Content-Location | 7.2.5. Content-Location | |||
| The "Content-Location" header field references a URI that can be used | The "Content-Location" header field references a URI that can be used | |||
| skipping to change at page 68, line 20 ¶ | skipping to change at page 69, line 32 ¶ | |||
| 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). | |||
| 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. | |||
| +-------------------+----------------------------+ | +-------------------+----------------------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +-------------------+----------------------------+ | ||||
| | Content-Range | Section 7.3.4 | | | Content-Range | Section 7.3.4 | | |||
| | Trailer | Section 5.6.3 | | | Trailer | Section 5.6.3 | | |||
| | Transfer-Encoding | Section 6.1 of [Messaging] | | | Transfer-Encoding | Section 6.1 of [Messaging] | | |||
| +-------------------+----------------------------+ | +-------------------+----------------------------+ | |||
| Table 7 | ||||
| 7.3.1. Purpose | 7.3.1. Purpose | |||
| 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 8.3.4) represents the desired state of the target | request (Section 8.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 8.3.3) | representation in the payload of a POST request (Section 8.3.3) | |||
| represents information to be processed by the target resource. | represents information to be processed by the target resource. | |||
| 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 | |||
| skipping to change at page 71, line 44 ¶ | skipping to change at page 73, line 24 ¶ | |||
| The Content-Range header field has no meaning for status codes that | The Content-Range header field has no meaning for status codes that | |||
| do not explicitly describe its semantic. For this specification, | do not explicitly describe its semantic. For this specification, | |||
| only the 206 (Partial Content) and 416 (Range Not Satisfiable) status | only the 206 (Partial Content) and 416 (Range Not Satisfiable) status | |||
| codes describe a meaning for Content-Range. | codes describe a meaning for Content-Range. | |||
| The following are examples of Content-Range values in which the | The following are examples of Content-Range values in which the | |||
| selected representation contains a total of 1234 bytes: | selected representation contains a total of 1234 bytes: | |||
| o The first 500 bytes: | o The first 500 bytes: | |||
| Content-Range: bytes 0-499/1234 | Content-Range: bytes 0-499/1234 | |||
| o The second 500 bytes: | o The second 500 bytes: | |||
| Content-Range: bytes 500-999/1234 | Content-Range: bytes 500-999/1234 | |||
| o All except for the first 500 bytes: | o All except for the first 500 bytes: | |||
| Content-Range: bytes 500-1233/1234 | Content-Range: bytes 500-1233/1234 | |||
| o The last 500 bytes: | o The last 500 bytes: | |||
| Content-Range: bytes 734-1233/1234 | Content-Range: bytes 734-1233/1234 | |||
| 7.3.5. Media Type multipart/byteranges | 7.3.5. Media Type multipart/byteranges | |||
| When a 206 (Partial Content) response message includes the content of | When a 206 (Partial Content) response message includes the content of | |||
| multiple ranges, they are transmitted as body parts in a multipart | multiple ranges, they are transmitted as body parts in a multipart | |||
| message body ([RFC2046], Section 5.1) with the media type of | message body ([RFC2046], Section 5.1) with the media type of | |||
| "multipart/byteranges". | "multipart/byteranges". | |||
| The multipart/byteranges media type includes one or more body parts, | The multipart/byteranges media type includes one or more body parts, | |||
| each with its own Content-Type and Content-Range fields. The | each with its own Content-Type and Content-Range fields. The | |||
| skipping to change at page 72, line 38 ¶ | skipping to change at page 74, line 14 ¶ | |||
| 1. Additional CRLFs might precede the first boundary string in the | 1. Additional CRLFs might precede the first boundary string in the | |||
| body. | body. | |||
| 2. Although [RFC2046] permits the boundary string to be quoted, some | 2. Although [RFC2046] permits the boundary string to be quoted, some | |||
| existing implementations handle a quoted boundary string | existing implementations handle a quoted boundary string | |||
| incorrectly. | incorrectly. | |||
| 3. A number of clients and servers were coded to an early draft of | 3. A number of clients and servers were coded to an early draft of | |||
| the byteranges specification that used a media type of multipart/ | the byteranges specification that used a media type of multipart/ | |||
| x-byteranges, which is almost (but not quite) compatible with | x-byteranges , which is almost (but not quite) compatible with | |||
| this type. | this type. | |||
| Despite the name, the "multipart/byteranges" media type is not | Despite the name, the "multipart/byteranges" media type is not | |||
| limited to byte ranges. The following example uses an "exampleunit" | limited to byte ranges. The following example uses an "exampleunit" | |||
| range unit: | range unit: | |||
| HTTP/1.1 206 Partial Content | HTTP/1.1 206 Partial Content | |||
| Date: Tue, 14 Nov 1995 06:25:24 GMT | Date: Tue, 14 Nov 1995 06:25:24 GMT | |||
| Last-Modified: Tue, 14 July 04:58:08 GMT | Last-Modified: Tue, 14 July 04:58:08 GMT | |||
| Content-Length: 2331785 | Content-Length: 2331785 | |||
| skipping to change at page 73, line 48 ¶ | skipping to change at page 75, line 16 ¶ | |||
| Interoperability considerations: N/A | Interoperability considerations: N/A | |||
| Published specification: This specification (see Section 7.3.5). | Published specification: This specification (see Section 7.3.5). | |||
| Applications that use this media type: HTTP components supporting | Applications that use this media type: HTTP components supporting | |||
| multiple ranges in a single request. | multiple ranges in a single request. | |||
| Fragment identifier considerations: N/A | Fragment identifier considerations: N/A | |||
| Additional information: | Additional information: Deprecated alias names for this type: N/A | |||
| Deprecated alias names for this type: N/A | Magic number(s): N/A | |||
| Magic number(s): N/A | File extension(s): N/A | |||
| File extension(s): N/A | ||||
| Macintosh file type code(s): N/A | Macintosh file type code(s): N/A | |||
| Person and email address to contact for further information: See Aut | Person and email address to contact for further information: See Aut | |||
| hors' Addresses section. | hors' Addresses section. | |||
| Intended usage: COMMON | Intended usage: COMMON | |||
| Restrictions on usage: N/A | Restrictions on usage: N/A | |||
| Author: See Authors' Addresses section. | Author: See Authors' Addresses section. | |||
| skipping to change at page 77, line 10 ¶ | skipping to change at page 78, line 32 ¶ | |||
| request to obtain an alternate representation. Furthermore, this | request to obtain an alternate representation. Furthermore, this | |||
| specification does not define a mechanism for supporting automatic | specification does not define a mechanism for supporting automatic | |||
| selection, though it does not prevent such a mechanism from being | selection, though it does not prevent such a mechanism from being | |||
| developed as an extension. | developed as an extension. | |||
| 7.4.3. Request Payload Negotiation | 7.4.3. Request Payload Negotiation | |||
| When content negotiation preferences are sent in a server's response, | When content negotiation preferences are sent in a server's response, | |||
| the listed preferences are called request payload negotiation because | the listed preferences are called request payload negotiation because | |||
| they intend to influence selection of an appropriate payload for | they intend to influence selection of an appropriate payload for | |||
| subsequent requests to that resource. For example, the Accept- | subsequent requests to that resource. For example, the | |||
| Encoding field (Section 9.4.3) can be sent in a response to indicate | Accept-Encoding field (Section 9.4.3) can be sent in a response to | |||
| preferred content codings for subsequent requests to that resource | indicate preferred content codings for subsequent requests to that | |||
| [RFC7694]. | resource [RFC7694]. | |||
| Similarly, Section 3.1 of [RFC5789] defines the "Accept-Patch" | | Similarly, Section 3.1 of [RFC5789] defines the "Accept-Patch" | |||
| response header field which allows discovery of which content | | response header field which allows discovery of which content | |||
| types are accepted in PATCH requests. | | types are accepted in PATCH requests. | |||
| 7.4.4. Quality Values | 7.4.4. Quality Values | |||
| The content negotiation fields defined by this specification use a | The content negotiation fields defined by this specification use a | |||
| common parameter, named "q" (case-insensitive), to assign a relative | common parameter, named "q" (case-insensitive), to assign a relative | |||
| "weight" to the preference for that associated kind of content. This | "weight" to the preference for that associated kind of content. This | |||
| weight is referred to as a "quality value" (or "qvalue") because the | weight is referred to as a "quality value" (or "qvalue") because the | |||
| same parameter name is often used within server configurations to | same parameter name is often used within server configurations to | |||
| assign a weight to the relative quality of the various | assign a weight to the relative quality of the various | |||
| representations that can be selected for a resource. | representations that can be selected for a resource. | |||
| skipping to change at page 79, line 5 ¶ | skipping to change at page 80, line 8 ¶ | |||
| Unlike distributed objects, the standardized request methods in HTTP | Unlike distributed objects, the standardized request methods in HTTP | |||
| are not resource-specific, since uniform interfaces provide for | are not resource-specific, since uniform interfaces provide for | |||
| better visibility and reuse in network-based systems [REST]. Once | better visibility and reuse in network-based systems [REST]. Once | |||
| defined, a standardized method ought to have the same semantics when | defined, a standardized method ought to have the same semantics when | |||
| applied to any resource, though each resource determines for itself | applied to any resource, though each resource determines for itself | |||
| whether those semantics are implemented or allowed. | whether those semantics are implemented or allowed. | |||
| This specification defines a number of standardized methods that are | This specification defines a number of standardized methods that are | |||
| commonly used in HTTP, as outlined by the following table. | commonly used in HTTP, as outlined by the following table. | |||
| +---------+-------------------------------------------------+-------+ | +---------+--------------------------------------------+-------+ | |||
| | Method | Description | Sec. | | | Method | Description | Sec. | | |||
| +---------+-------------------------------------------------+-------+ | | GET | Transfer a current representation of the | 8.3.1 | | |||
| | GET | Transfer a current representation of the target | 8.3.1 | | | | target resource. | | | |||
| | | resource. | | | | HEAD | Same as GET, but do not transfer the | 8.3.2 | | |||
| | HEAD | Same as GET, but do not transfer the response | 8.3.2 | | | | response body. | | | |||
| | | body. | | | | POST | Perform resource-specific processing on | 8.3.3 | | |||
| | POST | Perform resource-specific processing on the | 8.3.3 | | | | the request payload. | | | |||
| | | request payload. | | | | PUT | Replace all current representations of the | 8.3.4 | | |||
| | PUT | Replace all current representations of the | 8.3.4 | | | | target resource with the request payload. | | | |||
| | | target resource with the request payload. | | | | DELETE | Remove all current representations of the | 8.3.5 | | |||
| | DELETE | Remove all current representations of the | 8.3.5 | | | | target resource. | | | |||
| | | target resource. | | | | CONNECT | Establish a tunnel to the server | 8.3.6 | | |||
| | CONNECT | Establish a tunnel to the server identified by | 8.3.6 | | | | identified by the target resource. | | | |||
| | | the target resource. | | | | OPTIONS | Describe the communication options for the | 8.3.7 | | |||
| | OPTIONS | Describe the communication options for the | 8.3.7 | | | | target resource. | | | |||
| | | target resource. | | | | TRACE | Perform a message loop-back test along the | 8.3.8 | | |||
| | TRACE | Perform a message loop-back test along the path | 8.3.8 | | | | path to the target resource. | | | |||
| | | to the target resource. | | | +---------+--------------------------------------------+-------+ | |||
| +---------+-------------------------------------------------+-------+ | ||||
| Table 4 | Table 8 | |||
| 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. | All other methods are OPTIONAL. | |||
| 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 11.4.2). However, the set of allowed | Allow header field (Section 11.4.2). 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 | |||
| origin server SHOULD respond with the 501 (Not Implemented) status | origin server SHOULD respond with the 501 (Not Implemented) status | |||
| code. When a request method is received that is known by an origin | code. When a request method is received that is known by an origin | |||
| server but not allowed for the target resource, the origin server | server but not allowed for the target resource, the origin server | |||
| SHOULD respond with the 405 (Method Not Allowed) status code. | SHOULD respond with the 405 (Method Not Allowed) status code. | |||
| 8.2. Common Method Properties | 8.2. Common Method Properties | |||
| +---------+------+------------+----------------+ | ||||
| | Method | Safe | Idempotent | Reference | | ||||
| +---------+------+------------+----------------+ | ||||
| | CONNECT | no | no | Section 8.3.6 | | ||||
| | DELETE | no | yes | Section 8.3.5 | | ||||
| | GET | yes | yes | Section 8.3.1 | | ||||
| | HEAD | yes | yes | Section 8.3.2 | | ||||
| | OPTIONS | yes | yes | Section 8.3.7 | | ||||
| | POST | no | no | Section 8.3.3 | | ||||
| | PUT | no | yes | Section 8.3.4 | | ||||
| | TRACE | yes | yes | Section 8.3.8 | | ||||
| +---------+------+------------+----------------+ | ||||
| Table 5 | +---------+------+------------+---------------+ | |||
| | Method | Safe | Idempotent | Reference | | ||||
| | CONNECT | no | no | Section 8.3.6 | | ||||
| | DELETE | no | yes | Section 8.3.5 | | ||||
| | GET | yes | yes | Section 8.3.1 | | ||||
| | HEAD | yes | yes | Section 8.3.2 | | ||||
| | OPTIONS | yes | yes | Section 8.3.7 | | ||||
| | POST | no | no | Section 8.3.3 | | ||||
| | PUT | no | yes | Section 8.3.4 | | ||||
| | TRACE | yes | yes | Section 8.3.8 | | ||||
| +---------+------+------------+---------------+ | ||||
| Table 9 | ||||
| 8.2.1. Safe Methods | 8.2.1. Safe Methods | |||
| Request methods are considered "safe" if their defined semantics are | Request methods are considered "safe" if their defined semantics are | |||
| essentially read-only; i.e., the client does not request, and does | essentially read-only; i.e., the client does not request, and does | |||
| not expect, any state change on the origin server as a result of | not expect, any state change on the origin server as a result of | |||
| applying a safe method to a target resource. Likewise, reasonable | applying a safe method to a target resource. Likewise, reasonable | |||
| use of a safe method is not expected to cause any harm, loss of | use of a safe method is not expected to cause any harm, loss of | |||
| property, or unusual burden on the origin server. | property, or unusual burden on the origin server. | |||
| skipping to change at page 88, line 5 ¶ | skipping to change at page 88, line 50 ¶ | |||
| might or might not be destroyed by the origin server, and the | might or might not be destroyed by the origin server, and the | |||
| associated storage might or might not be reclaimed, depending | associated storage might or might not be reclaimed, depending | |||
| entirely on the nature of the resource and its implementation by the | entirely on the nature of the resource and its implementation by the | |||
| origin server (which are beyond the scope of this specification). | origin server (which are beyond the scope of this specification). | |||
| Likewise, other implementation aspects of a resource might need to be | Likewise, other implementation aspects of a resource might need to be | |||
| deactivated or archived as a result of a DELETE, such as database or | deactivated or archived as a result of a DELETE, such as database or | |||
| gateway connections. In general, it is assumed that the origin | gateway connections. In general, it is assumed that the origin | |||
| server will only allow DELETE on resources for which it has a | server will only allow DELETE on resources for which it has a | |||
| prescribed mechanism for accomplishing the deletion. | prescribed mechanism for accomplishing the deletion. | |||
| Relatively few resources allow the DELETE method -- its primary use | Relatively few resources allow the DELETE method - its primary use is | |||
| is for remote authoring environments, where the user has some | for remote authoring environments, where the user has some direction | |||
| direction regarding its effect. For example, a resource that was | regarding its effect. For example, a resource that was previously | |||
| previously created using a PUT request, or identified via the | created using a PUT request, or identified via the Location header | |||
| Location header field after a 201 (Created) response to a POST | field after a 201 (Created) response to a POST request, might allow a | |||
| request, might allow a corresponding DELETE request to undo those | corresponding DELETE request to undo those actions. Similarly, | |||
| actions. Similarly, custom user agent implementations that implement | custom user agent implementations that implement an authoring | |||
| an authoring function, such as revision control clients using HTTP | function, such as revision control clients using HTTP for remote | |||
| for remote operations, might use DELETE based on an assumption that | operations, might use DELETE based on an assumption that the server's | |||
| the server's URI space has been crafted to correspond to a version | URI space has been crafted to correspond to a version repository. | |||
| repository. | ||||
| If a DELETE method is successfully applied, the origin server SHOULD | If a DELETE method is successfully applied, the origin server SHOULD | |||
| send | send | |||
| o a 202 (Accepted) status code if the action will likely succeed but | o a 202 (Accepted) status code if the action will likely succeed but | |||
| has not yet been enacted, | has not yet been enacted, | |||
| o a 204 (No Content) status code if the action has been enacted and | o a 204 (No Content) status code if the action has been enacted and | |||
| no further information is to be supplied, or | no further information is to be supplied, or | |||
| skipping to change at page 93, line 5 ¶ | skipping to change at page 93, line 43 ¶ | |||
| body if any is present in the request and what refinements the method | body if any is present in the request and what refinements the method | |||
| makes to header field or status code semantics. If the new method is | makes to header field or status code semantics. If the new method is | |||
| cacheable, its definition ought to describe how, and under what | cacheable, its definition ought to describe how, and under what | |||
| conditions, a cache can store a response and use it to satisfy a | conditions, a cache can store a response and use it to satisfy a | |||
| subsequent request. The new method ought to describe whether it can | subsequent request. The new method ought to describe whether it can | |||
| be made conditional (Section 9.2) and, if so, how a server responds | be made conditional (Section 9.2) and, if so, how a server responds | |||
| when the condition is false. Likewise, if the new method might have | when the condition is false. Likewise, if the new method might have | |||
| some use for partial response semantics (Section 9.3), it ought to | some use for partial response semantics (Section 9.3), it ought to | |||
| document this, too. | document this, too. | |||
| Note: Avoid defining a method name that starts with "M-", since | | *Note:* Avoid defining a method name that starts with "M-", | |||
| that prefix might be misinterpreted as having the semantics | | since that prefix might be misinterpreted as having the | |||
| assigned to it by [RFC2774]. | | semantics assigned to it by [RFC2774]. | |||
| 9. Request Header Fields | 9. Request Header Fields | |||
| A client sends request header fields to provide more information | A client sends request header fields to provide more information | |||
| about the request context, make the request conditional based on the | about the request context, make the request conditional based on the | |||
| target resource state, suggest preferred formats for the response, | target resource state, suggest preferred formats for the response, | |||
| supply authentication credentials, or modify the expected request | supply authentication credentials, or modify the expected request | |||
| processing. These fields act as request modifiers, similar to the | processing. These fields act as request modifiers, similar to the | |||
| parameters on a programming language method invocation. | parameters on a programming language method invocation. | |||
| 9.1. Controls | 9.1. Controls | |||
| Controls are request header fields that direct specific handling of | Controls are request header fields that direct specific handling of | |||
| the request. | the request. | |||
| +---------------+----------------------------+ | +---------------+----------------------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +---------------+----------------------------+ | ||||
| | Cache-Control | Section 5.2 of [Caching] | | | Cache-Control | Section 5.2 of [Caching] | | |||
| | Expect | Section 9.1.1 | | | Expect | Section 9.1.1 | | |||
| | Host | Section 6.6 | | | Host | Section 6.6 | | |||
| | Max-Forwards | Section 9.1.2 | | | Max-Forwards | Section 9.1.2 | | |||
| | Pragma | Section 5.4 of [Caching] | | | Pragma | Section 5.4 of [Caching] | | |||
| | TE | Section 7.4 of [Messaging] | | | TE | Section 7.4 of [Messaging] | | |||
| +---------------+----------------------------+ | +---------------+----------------------------+ | |||
| Table 10 | ||||
| 9.1.1. Expect | 9.1.1. Expect | |||
| The "Expect" header field in a request indicates a certain set of | The "Expect" header field in a request indicates a certain set of | |||
| behaviors (expectations) that need to be supported by the server in | behaviors (expectations) that need to be supported by the server in | |||
| order to properly handle this request. The only such expectation | order to properly handle this request. The only such expectation | |||
| defined by this specification is 100-continue. | defined by this specification is 100-continue. | |||
| Expect = "100-continue" | Expect = "100-continue" | |||
| The Expect field value is case-insensitive. | The Expect field value is case-insensitive. | |||
| skipping to change at page 95, line 41 ¶ | skipping to change at page 96, line 41 ¶ | |||
| 100-continue expectation and indicates a request message body will | 100-continue expectation and indicates a request message body will | |||
| follow, either send an immediate response with a final status code, | follow, either send an immediate response with a final status code, | |||
| if that status can be determined by examining just the method, target | if that status can be determined by examining just the method, target | |||
| URI, and header fields, or begin forwarding the request toward the | URI, and header fields, or begin forwarding the request toward the | |||
| origin server by sending a corresponding request-line and header | origin server by sending a corresponding request-line and header | |||
| section to the next inbound server. If the proxy believes (from | section to the next inbound server. If the proxy believes (from | |||
| configuration or past interaction) that the next inbound server only | configuration or past interaction) that the next inbound server only | |||
| supports HTTP/1.0, the proxy MAY generate an immediate 100 (Continue) | supports HTTP/1.0, the proxy MAY generate an immediate 100 (Continue) | |||
| response to encourage the client to begin sending the message body. | response to encourage the client to begin sending the message body. | |||
| Note: The Expect header field was added after the original | | *Note:* The Expect header field was added after the original | |||
| publication of HTTP/1.1 [RFC2068] as both the means to request an | | publication of HTTP/1.1 [RFC2068] as both the means to request | |||
| interim 100 (Continue) response and the general mechanism for | | an interim 100 (Continue) response and the general mechanism | |||
| indicating must-understand extensions. However, the extension | | for indicating must-understand extensions. However, the | |||
| mechanism has not been used by clients and the must-understand | | extension mechanism has not been used by clients and the must- | |||
| requirements have not been implemented by many servers, rendering | | understand requirements have not been implemented by many | |||
| the extension mechanism useless. This specification has removed | | servers, rendering the extension mechanism useless. This | |||
| the extension mechanism in order to simplify the definition and | | specification has removed the extension mechanism in order to | |||
| processing of 100-continue. | | simplify the definition and processing of 100-continue. | |||
| 9.1.2. Max-Forwards | 9.1.2. Max-Forwards | |||
| The "Max-Forwards" header field provides a mechanism with the TRACE | The "Max-Forwards" header field provides a mechanism with the TRACE | |||
| (Section 8.3.8) and OPTIONS (Section 8.3.7) request methods to limit | (Section 8.3.8) and OPTIONS (Section 8.3.7) request methods to limit | |||
| the number of times that the request is forwarded by proxies. This | the number of times that the request is forwarded by proxies. This | |||
| can be useful when the client is attempting to trace a request that | can be useful when the client is attempting to trace a request that | |||
| appears to be failing or looping mid-chain. | appears to be failing or looping mid-chain. | |||
| Max-Forwards = 1*DIGIT | Max-Forwards = 1*DIGIT | |||
| skipping to change at page 97, line 22 ¶ | skipping to change at page 98, line 22 ¶ | |||
| specification consists of a comparison between a set of validators | specification consists of a comparison between a set of validators | |||
| obtained from prior representations of the target resource to the | obtained from prior representations of the target resource to the | |||
| current state of validators for the selected representation | current state of validators for the selected representation | |||
| (Section 11.2). Hence, these preconditions evaluate whether the | (Section 11.2). Hence, these preconditions evaluate whether the | |||
| state of the target resource has changed since a given state known by | state of the target resource has changed since a given state known by | |||
| the client. The effect of such an evaluation depends on the method | the client. The effect of such an evaluation depends on the method | |||
| semantics and choice of conditional, as defined in Section 9.2.1. | semantics and choice of conditional, as defined in Section 9.2.1. | |||
| +---------------------+---------------+ | +---------------------+---------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +---------------------+---------------+ | ||||
| | If-Match | Section 9.2.3 | | | If-Match | Section 9.2.3 | | |||
| | If-None-Match | Section 9.2.4 | | | If-None-Match | Section 9.2.4 | | |||
| | If-Modified-Since | Section 9.2.5 | | | If-Modified-Since | Section 9.2.5 | | |||
| | If-Unmodified-Since | Section 9.2.6 | | | If-Unmodified-Since | Section 9.2.6 | | |||
| | If-Range | Section 9.2.7 | | | If-Range | Section 9.2.7 | | |||
| +---------------------+---------------+ | +---------------------+---------------+ | |||
| Table 11 | ||||
| 9.2.1. Evaluation | 9.2.1. Evaluation | |||
| Except when excluded below, a recipient cache or origin server MUST | Except when excluded below, a recipient cache or origin server MUST | |||
| evaluate received request preconditions after it has successfully | evaluate received request preconditions after it has successfully | |||
| performed its normal request checks and just before it would perform | performed its normal request checks and just before it would perform | |||
| the action associated with the request method. A server MUST ignore | the action associated with the request method. A server MUST ignore | |||
| all received preconditions if its response to the same request | all received preconditions if its response to the same request | |||
| without those conditions would have been a status code other than a | without those conditions would have been a status code other than a | |||
| 2xx (Successful) or 412 (Precondition Failed). In other words, | 2xx (Successful) or 412 (Precondition Failed). In other words, | |||
| redirects and failures take precedence over the evaluation of | redirects and failures take precedence over the evaluation of | |||
| skipping to change at page 98, line 42 ¶ | skipping to change at page 100, line 5 ¶ | |||
| validation, a validated cache is more efficient than a partial | validation, a validated cache is more efficient than a partial | |||
| response, and entity tags are presumed to be more accurate than date | response, and entity tags are presumed to be more accurate than date | |||
| validators. | validators. | |||
| A recipient cache or origin server MUST evaluate the request | A recipient cache or origin server MUST evaluate the request | |||
| preconditions defined by this specification in the following order: | preconditions defined by this specification in the following order: | |||
| 1. When recipient is the origin server and If-Match is present, | 1. When recipient is the origin server and If-Match is present, | |||
| evaluate the If-Match precondition: | evaluate the If-Match precondition: | |||
| * if true, continue to step 3 | o if true, continue to step 3 | |||
| * if false, respond 412 (Precondition Failed) unless it can be | o if false, respond 412 (Precondition Failed) unless it can be | |||
| determined that the state-changing request has already | determined that the state-changing request has already | |||
| succeeded (see Section 9.2.3) | succeeded (see Section 9.2.3) | |||
| 2. When recipient is the origin server, If-Match is not present, and | 2. When recipient is the origin server, If-Match is not present, and | |||
| If-Unmodified-Since is present, evaluate the If-Unmodified-Since | If-Unmodified-Since is present, evaluate the If-Unmodified-Since | |||
| precondition: | precondition: | |||
| * if true, continue to step 3 | o if true, continue to step 3 | |||
| * if false, respond 412 (Precondition Failed) unless it can be | o if false, respond 412 (Precondition Failed) unless it can be | |||
| determined that the state-changing request has already | determined that the state-changing request has already | |||
| succeeded (see Section 9.2.6) | succeeded (see Section 9.2.6) | |||
| 3. When If-None-Match is present, evaluate the If-None-Match | 3. When If-None-Match is present, evaluate the If-None-Match | |||
| precondition: | precondition: | |||
| * if true, continue to step 5 | o if true, continue to step 5 | |||
| * if false for GET/HEAD, respond 304 (Not Modified) | o if false for GET/HEAD, respond 304 (Not Modified) | |||
| * if false for other methods, respond 412 (Precondition Failed) | o if false for other methods, respond 412 (Precondition Failed) | |||
| 4. When the method is GET or HEAD, If-None-Match is not present, and | 4. When the method is GET or HEAD, If-None-Match is not present, and | |||
| If-Modified-Since is present, evaluate the If-Modified-Since | If-Modified-Since is present, evaluate the If-Modified-Since | |||
| precondition: | precondition: | |||
| * if true, continue to step 5 | o if true, continue to step 5 | |||
| * if false, respond 304 (Not Modified) | o if false, respond 304 (Not Modified) | |||
| 5. When the method is GET and both Range and If-Range are present, | 5. When the method is GET and both Range and If-Range are present, | |||
| evaluate the If-Range precondition: | evaluate the If-Range precondition: | |||
| * if the validator matches and the Range specification is | o if the validator matches and the Range specification is | |||
| applicable to the selected representation, respond 206 | applicable to the selected representation, respond 206 | |||
| (Partial Content) | (Partial Content) | |||
| 6. Otherwise, | 6. Otherwise, | |||
| * all conditions are met, so perform the requested action and | o all conditions are met, so perform the requested action and | |||
| respond according to its success or failure. | respond according to its success or failure. | |||
| Any extension to HTTP that defines additional conditional request | Any extension to HTTP that defines additional conditional request | |||
| header fields ought to define its own expectations regarding the | header fields ought to define its own expectations regarding the | |||
| order for evaluating such fields in relation to those defined in this | order for evaluating such fields in relation to those defined in this | |||
| document and other conditionals that might be found in practice. | document and other conditionals that might be found in practice. | |||
| 9.2.3. If-Match | 9.2.3. If-Match | |||
| The "If-Match" header field makes the request method conditional on | The "If-Match" header field makes the request method conditional on | |||
| skipping to change at page 103, line 27 ¶ | skipping to change at page 104, line 15 ¶ | |||
| If-Modified-Since = HTTP-date | If-Modified-Since = HTTP-date | |||
| An example of the field is: | An example of the field is: | |||
| If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT | If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT | |||
| A recipient MUST ignore If-Modified-Since if the request contains an | A recipient MUST ignore If-Modified-Since if the request contains an | |||
| If-None-Match header field; the condition in If-None-Match is | If-None-Match header field; the condition in If-None-Match is | |||
| considered to be a more accurate replacement for the condition in If- | considered to be a more accurate replacement for the condition in If- | |||
| Modified-Since, and the two are only combined for the sake of | Modified-Since, and the two are only combined for the sake of | |||
| interoperating with older intermediaries that might not implement If- | interoperating with older intermediaries that might not implement | |||
| None-Match. | If-None-Match. | |||
| A recipient MUST ignore the If-Modified-Since header field if the | A recipient MUST ignore the If-Modified-Since header field if the | |||
| received field value is not a valid HTTP-date, or if the request | received field value is not a valid HTTP-date, or if the request | |||
| method is neither GET nor HEAD. | method is neither GET nor HEAD. | |||
| A recipient MUST interpret an If-Modified-Since field value's | A recipient MUST interpret an If-Modified-Since field value's | |||
| timestamp in terms of the origin server's clock. | timestamp in terms of the origin server's clock. | |||
| If-Modified-Since is typically used for two distinct purposes: 1) to | If-Modified-Since is typically used for two distinct purposes: 1) to | |||
| allow efficient updates of a cached representation that does not have | allow efficient updates of a cached representation that does not have | |||
| skipping to change at page 104, line 11 ¶ | skipping to change at page 104, line 47 ¶ | |||
| archived backup). However, caches occasionally generate the field | archived backup). However, caches occasionally generate the field | |||
| value based on other data, such as the Date header field of the | value based on other data, such as the Date header field of the | |||
| cached message or the local clock time that the message was received, | cached message or the local clock time that the message was received, | |||
| particularly when the cached message does not contain a Last-Modified | particularly when the cached message does not contain a Last-Modified | |||
| field. | field. | |||
| When used for limiting the scope of retrieval to a recent time | When used for limiting the scope of retrieval to a recent time | |||
| window, a user agent will generate an If-Modified-Since field value | window, a user agent will generate an If-Modified-Since field value | |||
| based on either its own local clock or a Date header field received | based on either its own local clock or a Date header field received | |||
| from the server in a prior response. Origin servers that choose an | from the server in a prior response. Origin servers that choose an | |||
| exact timestamp match based on the selected representation's Last- | exact timestamp match based on the selected representation's | |||
| Modified field will not be able to help the user agent limit its data | Last-Modified field will not be able to help the user agent limit its | |||
| transfers to only those changed during the specified window. | data transfers to only those changed during the specified window. | |||
| An origin server that receives an If-Modified-Since header field | An origin server that receives an If-Modified-Since header field | |||
| SHOULD evaluate the condition as per Section 9.2.1 prior to | SHOULD evaluate the condition as per Section 9.2.1 prior to | |||
| performing the method. The origin server SHOULD NOT perform the | performing the method. The origin server SHOULD NOT perform the | |||
| requested method if the selected representation's last modification | requested method if the selected representation's last modification | |||
| date is earlier than or equal to the date provided in the field | date is earlier than or equal to the date provided in the field | |||
| value; instead, the origin server SHOULD generate a 304 (Not | value; instead, the origin server SHOULD generate a 304 (Not | |||
| Modified) response, including only those metadata that are useful for | Modified) response, including only those metadata that are useful for | |||
| identifying or updating a previously cached response. | identifying or updating a previously cached response. | |||
| skipping to change at page 106, line 38 ¶ | skipping to change at page 107, line 31 ¶ | |||
| provided that is not a strong validator in the sense defined by | provided that is not a strong validator in the sense defined by | |||
| Section 11.2.2.2. A valid entity-tag can be distinguished from a | Section 11.2.2.2. A valid entity-tag can be distinguished from a | |||
| valid HTTP-date by examining the first two characters for a DQUOTE. | valid HTTP-date by examining the first two characters for a DQUOTE. | |||
| If the validator given in the If-Range header field matches the | If the validator given in the If-Range header field matches the | |||
| current validator for the selected representation of the target | current validator for the selected representation of the target | |||
| resource, then the server SHOULD process the Range header field as | resource, then the server SHOULD process the Range header field as | |||
| requested. If the validator does not match, the server MUST ignore | requested. If the validator does not match, the server MUST ignore | |||
| the Range header field. Note that this comparison by exact match, | the Range header field. Note that this comparison by exact match, | |||
| including when the validator is an HTTP-date, differs from the | including when the validator is an HTTP-date, differs from the | |||
| "earlier than or equal to" comparison used when evaluating an If- | "earlier than or equal to" comparison used when evaluating an | |||
| Unmodified-Since conditional. | If-Unmodified-Since conditional. | |||
| 9.3. Range | 9.3. Range | |||
| The "Range" header field on a GET request modifies the method | The "Range" header field on a GET request modifies the method | |||
| semantics to request transfer of only one or more subranges of the | semantics to request transfer of only one or more subranges of the | |||
| selected representation data (Section 7.1), rather than the entire | selected representation data (Section 7.1), rather than the entire | |||
| selected representation. | selected representation. | |||
| Range = ranges-specifier | Range = ranges-specifier | |||
| skipping to change at page 108, line 38 ¶ | skipping to change at page 109, line 32 ¶ | |||
| The following request header fields can be sent by a user agent to | The following request header fields can be sent by a user agent to | |||
| engage in proactive negotiation of the response content, as defined | engage in proactive negotiation of the response content, as defined | |||
| in Section 7.4.1. The preferences sent in these fields apply to any | in Section 7.4.1. The preferences sent in these fields apply to any | |||
| content in the response, including representations of the target | content in the response, including representations of the target | |||
| resource, representations of error or processing status, and | resource, representations of error or processing status, and | |||
| potentially even the miscellaneous text strings that might appear | potentially even the miscellaneous text strings that might appear | |||
| within the protocol. | within the protocol. | |||
| +-----------------+---------------+ | +-----------------+---------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +-----------------+---------------+ | ||||
| | Accept | Section 9.4.1 | | | Accept | Section 9.4.1 | | |||
| | Accept-Charset | Section 9.4.2 | | | Accept-Charset | Section 9.4.2 | | |||
| | Accept-Encoding | Section 9.4.3 | | | Accept-Encoding | Section 9.4.3 | | |||
| | Accept-Language | Section 9.4.4 | | | Accept-Language | Section 9.4.4 | | |||
| +-----------------+---------------+ | +-----------------+---------------+ | |||
| Table 12 | ||||
| For each of these header fields, a request that does not contain it | For each of these header fields, a request that does not contain it | |||
| implies that the user agent has no preference on that axis of | implies that the user agent has no preference on that axis of | |||
| negotiation. If the header field is present in a request and none of | negotiation. If the header field is present in a request and none of | |||
| the available representations for the response can be considered | the available representations for the response can be considered | |||
| acceptable according to it, the origin server can either honor the | acceptable according to it, the origin server can either honor the | |||
| header field by sending a 406 (Not Acceptable) response or disregard | header field by sending a 406 (Not Acceptable) response or disregard | |||
| the header field by treating the response as if it is not subject to | the header field by treating the response as if it is not subject to | |||
| content negotiation for that request header field. This does not | content negotiation for that request header field. This does not | |||
| imply, however, that the client will be able to use the | imply, however, that the client will be able to use the | |||
| representation. | representation. | |||
| Note: Sending these header fields makes it easier for a server to | *Note:* Sending these header fields makes it easier for a server to | |||
| identify an individual by virtue of the user agent's request | identify an individual by virtue of the user agent's request | |||
| characteristics (Section 12.11). | characteristics (Section 12.11). | |||
| Each of these header fields defines a wildcard value (often, "*") to | Each of these header fields defines a wildcard value (often, "*") to | |||
| select unspecified values. If no wildcard is present, all values not | select unspecified values. If no wildcard is present, all values not | |||
| explicitly mentioned in the field are considered "not acceptable" to | explicitly mentioned in the field are considered "not acceptable" to | |||
| the client. | the client. | |||
| Note: In practice, using wildcards in content negotiation has limited | *Note:* In practice, using wildcards in content negotiation has | |||
| practical value, because it is seldom useful to say, for example, "I | limited practical value, because it is seldom useful to say, for | |||
| prefer image/* more or less than (some other specific value)". | example, "I prefer image/* more or less than (some other specific | |||
| Clients can explicitly request a 406 (Not Acceptable) response if a | value)". Clients can explicitly request a 406 (Not Acceptable) | |||
| more preferred format is not available by sending Accept: */*;q=0, | response if a more preferred format is not available by sending | |||
| but they still need to be able to handle a different response, since | Accept: */*;q=0, but they still need to be able to handle a different | |||
| the server is allowed to ignore their preference. | response, since the server is allowed to ignore their preference. | |||
| 9.4.1. Accept | 9.4.1. Accept | |||
| The "Accept" header field can be used by user agents to specify their | The "Accept" header field can be used by user agents to specify their | |||
| preferences regarding response media types. For example, Accept | preferences regarding response media types. For example, Accept | |||
| header fields can be used to indicate that the request is | header fields can be used to indicate that the request is | |||
| specifically limited to a small set of desired types, as in the case | specifically limited to a small set of desired types, as in the case | |||
| of a request for an in-line image. | of a request for an in-line image. | |||
| When sent by a server in a response, Accept provides information | When sent by a server in a response, Accept provides information | |||
| skipping to change at page 110, line 9 ¶ | skipping to change at page 111, line 12 ¶ | |||
| 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 7.4.4), and then zero or more | indicating a relative weight (Section 7.4.4), and then zero or more | |||
| extension parameters. The "q" parameter is necessary if any | extension parameters. The "q" parameter is necessary if any | |||
| extensions (accept-ext) are present, since it acts as a separator | extensions (accept-ext) are present, since it acts as a separator | |||
| between the two parameter sets. | between the two parameter sets. | |||
| Note: Use of the "q" parameter name to separate media type | | *Note:* Use of the "q" parameter name to separate media type | |||
| parameters from Accept extension parameters is due to historical | | parameters from Accept extension parameters is due to | |||
| practice. Although this prevents any media type parameter named | | historical practice. Although this prevents any media type | |||
| "q" from being used with a media range, such an event is believed | | parameter named "q" from being used with a media range, such an | |||
| to be unlikely given the lack of any "q" parameters in the IANA | | event is believed to be unlikely given the lack of any "q" | |||
| media type registry and the rare usage of any media type | | parameters in the IANA media type registry and the rare usage | |||
| parameters in Accept. Future media types are discouraged from | | of any media type parameters in Accept. Future media types are | |||
| registering any parameter named "q". | | discouraged from registering any parameter named "q". | |||
| The example | The example | |||
| Accept: audio/*; q=0.2, audio/basic | Accept: audio/*; q=0.2, audio/basic | |||
| is interpreted as "I prefer audio/basic, but send me any audio type | is interpreted as "I prefer audio/basic, but send me any audio type | |||
| if it is the best available after an 80% markdown in quality". | if it is the best available after an 80% markdown in quality". | |||
| A more elaborate example is | A more elaborate example is | |||
| skipping to change at page 111, line 15 ¶ | skipping to change at page 112, line 15 ¶ | |||
| determined by finding the media range with the highest precedence | determined by finding the media range with the highest precedence | |||
| that matches the type. For example, | that matches the type. For example, | |||
| Accept: text/*;q=0.3, text/plain;q=0.7, text/plain;format=flowed, | Accept: text/*;q=0.3, text/plain;q=0.7, text/plain;format=flowed, | |||
| text/plain;format=fixed;q=0.4, */*;q=0.5 | text/plain;format=fixed;q=0.4, */*;q=0.5 | |||
| would cause the following values to be associated: | would cause the following values to be associated: | |||
| +--------------------------+---------------+ | +--------------------------+---------------+ | |||
| | Media Type | Quality Value | | | Media Type | Quality Value | | |||
| +--------------------------+---------------+ | ||||
| | text/plain;format=flowed | 1 | | | text/plain;format=flowed | 1 | | |||
| | text/plain | 0.7 | | | text/plain | 0.7 | | |||
| | text/html | 0.3 | | | text/html | 0.3 | | |||
| | image/jpeg | 0.5 | | | image/jpeg | 0.5 | | |||
| | text/plain;format=fixed | 0.4 | | | text/plain;format=fixed | 0.4 | | |||
| | text/html;level=3 | 0.7 | | | text/html;level=3 | 0.7 | | |||
| +--------------------------+---------------+ | +--------------------------+---------------+ | |||
| Note: A user agent might be provided with a default set of quality | Table 13 | |||
| *Note:* A user agent might be provided with a default set of quality | ||||
| values for certain media ranges. However, unless the user agent is a | values for certain media ranges. However, unless the user agent is a | |||
| closed system that cannot interact with other rendering agents, this | closed system that cannot interact with other rendering agents, this | |||
| default set ought to be configurable by the user. | default set ought to be configurable by the user. | |||
| 9.4.2. Accept-Charset | 9.4.2. Accept-Charset | |||
| The "Accept-Charset" header field can be sent by a user agent to | The "Accept-Charset" header field can be sent by a user agent to | |||
| indicate its preferences for charsets in textual response content. | indicate its preferences for charsets in textual response content. | |||
| For example, this field allows user agents capable of understanding | For example, this field allows user agents capable of understanding | |||
| more comprehensive or special-purpose charsets to signal that | more comprehensive or special-purpose charsets to signal that | |||
| skipping to change at page 112, line 5 ¶ | skipping to change at page 113, line 5 ¶ | |||
| associate a quality value with each charset to indicate the user's | associate a quality value with each charset to indicate the user's | |||
| relative preference for that charset, as defined in Section 7.4.4. | relative preference for that charset, as defined in Section 7.4.4. | |||
| An example is | An example is | |||
| Accept-Charset: iso-8859-5, unicode-1-1;q=0.8 | Accept-Charset: iso-8859-5, unicode-1-1;q=0.8 | |||
| The special value "*", if present in the Accept-Charset field, | The special value "*", if present in the Accept-Charset field, | |||
| matches every charset that is not mentioned elsewhere in the Accept- | matches every charset that is not mentioned elsewhere in the Accept- | |||
| Charset field. | Charset field. | |||
| Note: Accept-Charset is deprecated because UTF-8 has become nearly | *Note:* Accept-Charset is deprecated because UTF-8 has become nearly | |||
| ubiquitous and sending a detailed list of user-preferred charsets | ubiquitous and sending a detailed list of user-preferred charsets | |||
| wastes bandwidth, increases latency, and makes passive fingerprinting | wastes bandwidth, increases latency, and makes passive fingerprinting | |||
| far too easy (Section 12.11). Most general-purpose user agents do | far too easy (Section 12.11). Most general-purpose user agents do | |||
| not send Accept-Charset, unless specifically configured to do so. | not send Accept-Charset, unless specifically configured to do so. | |||
| 9.4.3. Accept-Encoding | 9.4.3. Accept-Encoding | |||
| The "Accept-Encoding" header field can be used to indicate | The "Accept-Encoding" header field can be used to indicate | |||
| preferences regarding the use of content codings (Section 7.1.2). | preferences regarding the use of content codings (Section 7.1.2). | |||
| skipping to change at page 113, line 48 ¶ | skipping to change at page 114, line 48 ¶ | |||
| The most common use of Accept-Encoding is in responses with a 415 | The most common use of Accept-Encoding is in responses with a 415 | |||
| (Unsupported Media Type) status code, in response to optimistic use | (Unsupported Media Type) status code, in response to optimistic use | |||
| of a content coding by clients. However, the header field can also | of a content coding by clients. However, the header field can also | |||
| be used to indicate to clients that content codings are supported, to | be used to indicate to clients that content codings are supported, to | |||
| optimize future interactions. For example, a resource might include | optimize future interactions. For example, a resource might include | |||
| it in a 2xx (Successful) response when the request payload was big | it in a 2xx (Successful) response when the request payload was big | |||
| enough to justify use of a compression coding but the client failed | enough to justify use of a compression coding but the client failed | |||
| do so. | do so. | |||
| Note: Most HTTP/1.0 applications do not recognize or obey qvalues | | *Note:* Most HTTP/1.0 applications do not recognize or obey | |||
| associated with content-codings. This means that qvalues might | | qvalues associated with content-codings. This means that | |||
| not work and are not permitted with x-gzip or x-compress. | | qvalues might not work and are not permitted with x-gzip or | |||
| | x-compress. | ||||
| 9.4.4. Accept-Language | 9.4.4. Accept-Language | |||
| The "Accept-Language" header field can be used by user agents to | The "Accept-Language" header field can be used by user agents to | |||
| indicate the set of natural languages that are preferred in the | indicate the set of natural languages that are preferred in the | |||
| response. Language tags are defined in Section 7.1.3. | response. Language tags are defined in Section 7.1.3. | |||
| Accept-Language = 1#( language-range [ weight ] ) | Accept-Language = 1#( language-range [ weight ] ) | |||
| language-range = | language-range = | |||
| <language-range, see [RFC4647], Section 2.1> | <language-range, see [RFC4647], Section 2.1> | |||
| skipping to change at page 114, line 50 ¶ | skipping to change at page 115, line 50 ¶ | |||
| 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 12.11). | preferences of the user in every request (Section 12.11). | |||
| 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 preference | user agents need to allow user control over the linguistic preference | |||
| (either through configuration of the user agent itself or by | (either through configuration of the user agent itself or by | |||
| defaulting to a user controllable system setting). A user agent that | defaulting to a user controllable system setting). A user agent that | |||
| does not provide such control to the user MUST NOT send an Accept- | does not provide such control to the user MUST NOT send an Accept- | |||
| Language header field. | Language header field. | |||
| Note: User agents ought to provide guidance to users when setting | | *Note:* User agents ought to provide guidance to users when | |||
| a preference, since users are rarely familiar with the details of | | setting a preference, since users are rarely familiar with the | |||
| language matching as described above. For example, users might | | details of language matching as described above. For example, | |||
| assume that on selecting "en-gb", they will be served any kind of | | users might assume that on selecting "en-gb", they will be | |||
| English document if British English is not available. A user | | served any kind of English document if British English is not | |||
| agent might suggest, in such a case, to add "en" to the list for | | available. A user agent might suggest, in such a case, to add | |||
| better matching behavior. | | "en" to the list for better matching behavior. | |||
| 9.5. Authentication Credentials | 9.5. Authentication Credentials | |||
| HTTP provides a general framework for access control and | HTTP provides a general framework for access control and | |||
| authentication, via an extensible set of challenge-response | authentication, via an extensible set of challenge-response | |||
| authentication schemes, which can be used by a server to challenge a | authentication schemes, which can be used by a server to challenge a | |||
| client request and by a client to provide authentication information. | client request and by a client to provide authentication information. | |||
| Two header fields are used for carrying authentication credentials. | Two header fields are used for carrying authentication credentials. | |||
| Note that various custom mechanisms for user authentication use the | Note that various custom mechanisms for user authentication use the | |||
| Cookie header field for this purpose, as defined in [RFC6265]. | Cookie header field for this purpose, as defined in [RFC6265]. | |||
| +---------------------+---------------+ | +---------------------+---------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +---------------------+---------------+ | ||||
| | Authorization | Section 9.5.3 | | | Authorization | Section 9.5.3 | | |||
| | Proxy-Authorization | Section 9.5.4 | | | Proxy-Authorization | Section 9.5.4 | | |||
| +---------------------+---------------+ | +---------------------+---------------+ | |||
| Table 14 | ||||
| 9.5.1. Challenge and Response | 9.5.1. Challenge and Response | |||
| HTTP provides a simple challenge-response authentication framework | HTTP provides a simple challenge-response authentication framework | |||
| that can be used by a server to challenge a client request and by a | that can be used by a server to challenge a client request and by a | |||
| client to provide authentication information. It uses a case- | client to provide authentication information. It uses a case- | |||
| insensitive token as a means to identify the authentication scheme, | insensitive token as a means to identify the authentication scheme, | |||
| followed by additional information necessary for achieving | followed by additional information necessary for achieving | |||
| authentication via that scheme. The latter can be either a comma- | authentication via that scheme. The latter can be either a comma- | |||
| separated list of parameters or a single sequence of characters | separated list of parameters or a single sequence of characters | |||
| capable of holding base64-encoded information. | capable of holding base64-encoded information. | |||
| skipping to change at page 116, line 8 ¶ | skipping to change at page 117, line 12 ¶ | |||
| token68 = 1*( ALPHA / DIGIT / | token68 = 1*( ALPHA / DIGIT / | |||
| "-" / "." / "_" / "~" / "+" / "/" ) *"=" | "-" / "." / "_" / "~" / "+" / "/" ) *"=" | |||
| The token68 syntax allows the 66 unreserved URI characters | The token68 syntax allows the 66 unreserved URI characters | |||
| ([RFC3986]), plus a few others, so that it can hold a base64, | ([RFC3986]), plus a few others, so that it can hold a base64, | |||
| base64url (URL and filename safe alphabet), base32, or base16 (hex) | base64url (URL and filename safe alphabet), base32, or base16 (hex) | |||
| encoding, with or without padding, but excluding whitespace | encoding, with or without padding, but excluding whitespace | |||
| ([RFC4648]). | ([RFC4648]). | |||
| A 401 (Unauthorized) response message is used by an origin server to | A 401 (Unauthorized) response message is used by an origin server to | |||
| challenge the authorization of a user agent, including a WWW- | challenge the authorization of a user agent, including a | |||
| Authenticate header field containing at least one challenge | WWW-Authenticate header field containing at least one challenge | |||
| applicable to the requested resource. | applicable to the requested resource. | |||
| A 407 (Proxy Authentication Required) response message is used by a | A 407 (Proxy Authentication Required) response message is used by a | |||
| proxy to challenge the authorization of a client, including a Proxy- | proxy to challenge the authorization of a client, including a | |||
| Authenticate header field containing at least one challenge | Proxy-Authenticate header field containing at least one challenge | |||
| applicable to the proxy for the requested resource. | applicable to the proxy for the requested resource. | |||
| challenge = auth-scheme [ 1*SP ( token68 / #auth-param ) ] | challenge = auth-scheme [ 1*SP ( token68 / #auth-param ) ] | |||
| Note: Many clients fail to parse a challenge that contains an | | *Note:* Many clients fail to parse a challenge that contains an | |||
| unknown scheme. A workaround for this problem is to list well- | | unknown scheme. A workaround for this problem is to list well- | |||
| supported schemes (such as "basic") first. | | supported schemes (such as "basic") first. | |||
| A user agent that wishes to authenticate itself with an origin server | A user agent that wishes to authenticate itself with an origin server | |||
| -- usually, but not necessarily, after receiving a 401 (Unauthorized) | - usually, but not necessarily, after receiving a 401 (Unauthorized) | |||
| -- can do so by including an Authorization header field with the | - can do so by including an Authorization header field with the | |||
| request. | request. | |||
| A client that wishes to authenticate itself with a proxy -- usually, | A client that wishes to authenticate itself with a proxy - usually, | |||
| but not necessarily, after receiving a 407 (Proxy Authentication | but not necessarily, after receiving a 407 (Proxy Authentication | |||
| Required) -- can do so by including a Proxy-Authorization header | Required) - can do so by including a Proxy-Authorization header field | |||
| field with the request. | with the request. | |||
| Both the Authorization field value and the Proxy-Authorization field | Both the Authorization field value and the Proxy-Authorization field | |||
| value contain the client's credentials for the realm of the resource | value contain the client's credentials for the realm of the resource | |||
| being requested, based upon a challenge received in a response | being requested, based upon a challenge received in a response | |||
| (possibly at some point in the past). When creating their values, | (possibly at some point in the past). When creating their values, | |||
| the user agent ought to do so by selecting the challenge with what it | the user agent ought to do so by selecting the challenge with what it | |||
| considers to be the most secure auth-scheme that it understands, | considers to be the most secure auth-scheme that it understands, | |||
| obtaining credentials from the user as appropriate. Transmission of | obtaining credentials from the user as appropriate. Transmission of | |||
| credentials within header field values implies significant security | credentials within header field values implies significant security | |||
| considerations regarding the confidentiality of the underlying | considerations regarding the confidentiality of the underlying | |||
| skipping to change at page 118, line 10 ¶ | skipping to change at page 119, line 13 ¶ | |||
| outside the scope of its server. | outside the scope of its server. | |||
| For historical reasons, a sender MUST only generate the quoted-string | For historical reasons, a sender MUST only generate the quoted-string | |||
| syntax. Recipients might have to support both token and quoted- | syntax. Recipients might have to support both token and quoted- | |||
| string syntax for maximum interoperability with existing clients that | string syntax for maximum interoperability with existing clients that | |||
| have been accepting both notations for a long time. | have been accepting both notations for a long time. | |||
| 9.5.3. Authorization | 9.5.3. Authorization | |||
| The "Authorization" header field allows a user agent to authenticate | The "Authorization" header field allows a user agent to authenticate | |||
| itself with an origin server -- usually, but not necessarily, after | itself with an origin server - usually, but not necessarily, after | |||
| receiving a 401 (Unauthorized) response. Its value consists of | receiving a 401 (Unauthorized) response. Its value consists of | |||
| credentials containing the authentication information of the user | credentials containing the authentication information of the user | |||
| agent for the realm of the resource being requested. | agent for the realm of the resource being requested. | |||
| Authorization = credentials | Authorization = credentials | |||
| If a request is authenticated and a realm specified, the same | If a request is authenticated and a realm specified, the same | |||
| credentials are presumed to be valid for all other requests within | credentials are presumed to be valid for all other requests within | |||
| this realm (assuming that the authentication scheme itself does not | this realm (assuming that the authentication scheme itself does not | |||
| require otherwise, such as credentials that vary according to a | require otherwise, such as credentials that vary according to a | |||
| skipping to change at page 120, line 16 ¶ | skipping to change at page 121, line 20 ¶ | |||
| o The parsing of challenges and credentials is defined by this | o The parsing of challenges and credentials is defined by this | |||
| specification and cannot be modified by new authentication | specification and cannot be modified by new authentication | |||
| schemes. When the auth-param syntax is used, all parameters ought | schemes. When the auth-param syntax is used, all parameters ought | |||
| to support both token and quoted-string syntax, and syntactical | to support both token and quoted-string syntax, and syntactical | |||
| constraints ought to be defined on the field value after parsing | constraints ought to be defined on the field value after parsing | |||
| (i.e., quoted-string processing). This is necessary so that | (i.e., quoted-string processing). This is necessary so that | |||
| recipients can use a generic parser that applies to all | recipients can use a generic parser that applies to all | |||
| authentication schemes. | authentication schemes. | |||
| Note: The fact that the value syntax for the "realm" parameter is | *Note:* The fact that the value syntax for the "realm" parameter | |||
| restricted to quoted-string was a bad design choice not to be | is restricted to quoted-string was a bad design choice not to be | |||
| repeated for new parameters. | repeated for new parameters. | |||
| o Definitions of new schemes ought to define the treatment of | o Definitions of new schemes ought to define the treatment of | |||
| unknown extension parameters. In general, a "must-ignore" rule is | unknown extension parameters. In general, a "must-ignore" rule is | |||
| preferable to a "must-understand" rule, because otherwise it will | preferable to a "must-understand" rule, because otherwise it will | |||
| be hard to introduce new parameters in the presence of legacy | be hard to introduce new parameters in the presence of legacy | |||
| recipients. Furthermore, it's good to describe the policy for | recipients. Furthermore, it's good to describe the policy for | |||
| defining new parameters (such as "update the specification" or | defining new parameters (such as "update the specification" or | |||
| "use this registry"). | "use this registry"). | |||
| skipping to change at page 121, line 18 ¶ | skipping to change at page 122, line 13 ¶ | |||
| Section 12.14.4). | Section 12.14.4). | |||
| 9.6. Request Context | 9.6. 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. | |||
| +------------+---------------+ | +------------+---------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +------------+---------------+ | ||||
| | From | Section 9.6.1 | | | From | Section 9.6.1 | | |||
| | Referer | Section 9.6.2 | | | Referer | Section 9.6.2 | | |||
| | User-Agent | Section 9.6.3 | | | User-Agent | Section 9.6.3 | | |||
| +------------+---------------+ | +------------+---------------+ | |||
| Table 15 | ||||
| 9.6.1. From | 9.6.1. From | |||
| The "From" header field contains an Internet email address for a | The "From" header field contains an Internet email address for a | |||
| human user who controls the requesting user agent. The address ought | human user who controls the requesting user agent. The address ought | |||
| to be machine-usable, as defined by "mailbox" in Section 3.4 of | to be machine-usable, as defined by "mailbox" in Section 3.4 of | |||
| [RFC5322]: | [RFC5322]: | |||
| From = mailbox | From = mailbox | |||
| mailbox = <mailbox, see [RFC5322], Section 3.4> | mailbox = <mailbox, see [RFC5322], Section 3.4> | |||
| skipping to change at page 123, line 43 ¶ | skipping to change at page 124, line 39 ¶ | |||
| identifiers are listed in decreasing order of their significance for | identifiers are listed in decreasing order of their significance for | |||
| identifying the user agent software. Each product identifier | identifying the user agent software. Each product identifier | |||
| consists of a name and optional version. | consists of a name and optional version. | |||
| product = token ["/" product-version] | product = token ["/" product-version] | |||
| product-version = token | product-version = token | |||
| A sender SHOULD limit generated product identifiers to what is | A sender SHOULD limit generated product identifiers to what is | |||
| necessary to identify the product; a sender MUST NOT generate | necessary to identify the product; a sender MUST NOT generate | |||
| advertising or other nonessential information within the product | advertising or other nonessential information within the product | |||
| identifier. A sender SHOULD NOT generate information in product- | identifier. A sender SHOULD NOT generate information in | |||
| version that is not a version identifier (i.e., successive versions | product-version that is not a version identifier (i.e., successive | |||
| of the same product name ought to differ only in the product-version | versions of the same product name ought to differ only in the | |||
| portion of the product identifier). | product-version portion of the product identifier). | |||
| Example: | Example: | |||
| User-Agent: CERN-LineMode/2.15 libwww/2.17b3 | User-Agent: CERN-LineMode/2.15 libwww/2.17b3 | |||
| A user agent SHOULD NOT generate a User-Agent field containing | A user agent SHOULD NOT generate a User-Agent field containing | |||
| needlessly fine-grained detail and SHOULD limit the addition of | needlessly fine-grained detail and SHOULD limit the addition of | |||
| subproducts by third parties. Overly long and detailed User-Agent | subproducts by third parties. Overly long and detailed User-Agent | |||
| field values increase request latency and the risk of a user being | field values increase request latency and the risk of a user being | |||
| identified against their wishes ("fingerprinting"). | identified against their wishes ("fingerprinting"). | |||
| skipping to change at page 125, line 16 ¶ | skipping to change at page 126, line 8 ¶ | |||
| valid request | valid request | |||
| A single request can have multiple associated responses: zero or more | A single request can have multiple associated responses: zero or more | |||
| interim (non-final) responses with status codes in the | interim (non-final) responses with status codes in the | |||
| "informational" (1xx) range, followed by exactly one final response | "informational" (1xx) range, followed by exactly one final response | |||
| with a status code in one of the other ranges. | with a status code in one of the other ranges. | |||
| 10.1. Overview of Status Codes | 10.1. Overview of Status Codes | |||
| The status codes listed below are defined in this specification. The | The status codes listed below are defined in this specification. The | |||
| reason phrases listed here are only recommendations -- they can be | reason phrases listed here are only recommendations - they can be | |||
| replaced by local equivalents without affecting the protocol. | replaced by local equivalents without affecting the protocol. | |||
| Responses with status codes that are defined as heuristically | Responses with status codes that are defined as heuristically | |||
| cacheable (e.g., 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, | cacheable (e.g., 200, 203, 204, 206, 300, 301, 308, 404, 405, 410, | |||
| 414, and 501 in this specification) can be reused by a cache with | 414, and 501 in this specification) can be reused by a cache with | |||
| heuristic expiration unless otherwise indicated by the method | heuristic expiration unless otherwise indicated by the method | |||
| definition or explicit cache controls [Caching]; all other status | definition or explicit cache controls [Caching]; all other status | |||
| codes are not heuristically cacheable. | codes are not heuristically cacheable. | |||
| +-------+-------------------------------+------------------+ | +-------+-------------------------------+-----------------+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +-------+-------------------------------+------------------+ | | 100 | Continue | Section 10.2.1 | | |||
| | 100 | Continue | Section 10.2.1 | | | 101 | Switching Protocols | Section 10.2.2 | | |||
| | 101 | Switching Protocols | Section 10.2.2 | | | 200 | OK | Section 10.3.1 | | |||
| | 200 | OK | Section 10.3.1 | | | 201 | Created | Section 10.3.2 | | |||
| | 201 | Created | Section 10.3.2 | | | 202 | Accepted | Section 10.3.3 | | |||
| | 202 | Accepted | Section 10.3.3 | | | 203 | Non-Authoritative Information | Section 10.3.4 | | |||
| | 203 | Non-Authoritative Information | Section 10.3.4 | | | 204 | No Content | Section 10.3.5 | | |||
| | 204 | No Content | Section 10.3.5 | | | 205 | Reset Content | Section 10.3.6 | | |||
| | 205 | Reset Content | Section 10.3.6 | | | 206 | Partial Content | Section 10.3.7 | | |||
| | 206 | Partial Content | Section 10.3.7 | | | 300 | Multiple Choices | Section 10.4.1 | | |||
| | 300 | Multiple Choices | Section 10.4.1 | | | 301 | Moved Permanently | Section 10.4.2 | | |||
| | 301 | Moved Permanently | Section 10.4.2 | | | 302 | Found | Section 10.4.3 | | |||
| | 302 | Found | Section 10.4.3 | | | 303 | See Other | Section 10.4.4 | | |||
| | 303 | See Other | Section 10.4.4 | | | 304 | Not Modified | Section 10.4.5 | | |||
| | 304 | Not Modified | Section 10.4.5 | | | 305 | Use Proxy | Section 10.4.6 | | |||
| | 305 | Use Proxy | Section 10.4.6 | | | 306 | (Unused) | Section 10.4.7 | | |||
| | 306 | (Unused) | Section 10.4.7 | | | 307 | Temporary Redirect | Section 10.4.8 | | |||
| | 307 | Temporary Redirect | Section 10.4.8 | | | 308 | Permanent Redirect | Section 10.4.9 | | |||
| | 308 | Permanent Redirect | Section 10.4.9 | | | 400 | Bad Request | Section 10.5.1 | | |||
| | 400 | Bad Request | Section 10.5.1 | | | 401 | Unauthorized | Section 10.5.2 | | |||
| | 401 | Unauthorized | Section 10.5.2 | | | 402 | Payment Required | Section 10.5.3 | | |||
| | 402 | Payment Required | Section 10.5.3 | | | 403 | Forbidden | Section 10.5.4 | | |||
| | 403 | Forbidden | Section 10.5.4 | | | 404 | Not Found | Section 10.5.5 | | |||
| | 404 | Not Found | Section 10.5.5 | | | 405 | Method Not Allowed | Section 10.5.6 | | |||
| | 405 | Method Not Allowed | Section 10.5.6 | | | 406 | Not Acceptable | Section 10.5.7 | | |||
| | 406 | Not Acceptable | Section 10.5.7 | | | 407 | Proxy Authentication Required | Section 10.5.8 | | |||
| | 407 | Proxy Authentication Required | Section 10.5.8 | | | 408 | Request Timeout | Section 10.5.9 | | |||
| | 408 | Request Timeout | Section 10.5.9 | | | 409 | Conflict | Section 10.5.10 | | |||
| | 409 | Conflict | Section 10.5.10 | | | 410 | Gone | Section 10.5.11 | | |||
| | 410 | Gone | Section 10.5.11 | | | 411 | Length Required | Section 10.5.12 | | |||
| | 411 | Length Required | Section 10.5.12 | | | 412 | Precondition Failed | Section 10.5.13 | | |||
| | 412 | Precondition Failed | Section 10.5.13 | | | 413 | Payload Too Large | Section 10.5.14 | | |||
| | 413 | Payload Too Large | Section 10.5.14 | | | 414 | URI Too Long | Section 10.5.15 | | |||
| | 414 | URI Too Long | Section 10.5.15 | | | 415 | Unsupported Media Type | Section 10.5.16 | | |||
| | 415 | Unsupported Media Type | Section 10.5.16 | | | 416 | Range Not Satisfiable | Section 10.5.17 | | |||
| | 416 | Range Not Satisfiable | Section 10.5.17 | | | 417 | Expectation Failed | Section 10.5.18 | | |||
| | 417 | Expectation Failed | Section 10.5.18 | | | 418 | (Unused) | Section 10.5.19 | | |||
| | 418 | (Unused) | Section 10.5.19 | | | 422 | Unprocessable Payload | Section 10.5.20 | | |||
| | 422 | Unprocessable Payload | Section 10.5.20 | | | 426 | Upgrade Required | Section 10.5.21 | | |||
| | 426 | Upgrade Required | Section 10.5.21 | | | 500 | Internal Server Error | Section 10.6.1 | | |||
| | 500 | Internal Server Error | Section 10.6.1 | | | 501 | Not Implemented | Section 10.6.2 | | |||
| | 501 | Not Implemented | Section 10.6.2 | | | 502 | Bad Gateway | Section 10.6.3 | | |||
| | 502 | Bad Gateway | Section 10.6.3 | | | 503 | Service Unavailable | Section 10.6.4 | | |||
| | 503 | Service Unavailable | Section 10.6.4 | | | 504 | Gateway Timeout | Section 10.6.5 | | |||
| | 504 | Gateway Timeout | Section 10.6.5 | | | 505 | HTTP Version Not Supported | Section 10.6.6 | | |||
| | 505 | HTTP Version Not Supported | Section 10.6.6 | | +-------+-------------------------------+-----------------+ | |||
| +-------+-------------------------------+------------------+ | ||||
| Table 6 | Table 16 | |||
| Note that this list is not exhaustive -- it does not include | Note that this list is not exhaustive - it does not include extension | |||
| extension status codes defined in other specifications | status codes defined in other specifications (Section 10.7). | |||
| (Section 10.7). | ||||
| 10.2. Informational 1xx | 10.2. Informational 1xx | |||
| The 1xx (Informational) class of status code indicates an interim | The 1xx (Informational) class of status code indicates an interim | |||
| response for communicating connection status or request progress | response for communicating connection status or request progress | |||
| prior to completing the requested action and sending a final | prior to completing the requested action and sending a final | |||
| response. 1xx responses are terminated by the end of the header | response. 1xx responses are terminated by the end of the header | |||
| section. Since HTTP/1.0 did not define any 1xx status codes, a | section. Since HTTP/1.0 did not define any 1xx status codes, a | |||
| server MUST NOT send a 1xx response to an HTTP/1.0 client. | server MUST NOT send a 1xx response to an HTTP/1.0 client. | |||
| skipping to change at page 134, line 26 ¶ | skipping to change at page 135, line 34 ¶ | |||
| capable of representing the original target resource, as in the | capable of representing the original target resource, as in the | |||
| 300 (Multiple Choices) status code. | 300 (Multiple Choices) status code. | |||
| 3. Redirection to a different resource, identified by the Location | 3. Redirection to a different resource, identified by the Location | |||
| field, that can represent an indirect response to the request, as | field, that can represent an indirect response to the request, as | |||
| in the 303 (See Other) status code. | in the 303 (See Other) status code. | |||
| 4. Redirection to a previously cached result, as in the 304 (Not | 4. Redirection to a previously cached result, as in the 304 (Not | |||
| Modified) status code. | Modified) status code. | |||
| Note: In HTTP/1.0, the status codes 301 (Moved Permanently) and | | *Note:* In HTTP/1.0, the status codes 301 (Moved Permanently) | |||
| 302 (Found) were defined for the first type of redirect | | and 302 (Found) were defined for the first type of redirect | |||
| ([RFC1945], Section 9.3). Early user agents split on whether the | | ([RFC1945], Section 9.3). Early user agents split on whether | |||
| method applied to the redirect target would be the same as the | | the method applied to the redirect target would be the same as | |||
| original request or would be rewritten as GET. Although HTTP | | the original request or would be rewritten as GET. Although | |||
| originally defined the former semantics for 301 and 302 (to match | | HTTP originally defined the former semantics for 301 and 302 | |||
| its original implementation at CERN), and defined 303 (See Other) | | (to match its original implementation at CERN), and defined 303 | |||
| to match the latter semantics, prevailing practice gradually | | (See Other) to match the latter semantics, prevailing practice | |||
| converged on the latter semantics for 301 and 302 as well. The | | gradually converged on the latter semantics for 301 and 302 as | |||
| first revision of HTTP/1.1 added 307 (Temporary Redirect) to | | well. The first revision of HTTP/1.1 added 307 (Temporary | |||
| indicate the former semantics of 302 without being impacted by | | Redirect) to indicate the former semantics of 302 without being | |||
| divergent practice. For the same reason, 308 (Permanent Redirect) | | impacted by divergent practice. For the same reason, 308 | |||
| was later on added in [RFC7538] to match 301. Over 10 years | | (Permanent Redirect) was later on added in [RFC7538] to match | |||
| later, most user agents still do method rewriting for 301 and 302; | | 301. Over 10 years later, most user agents still do method | |||
| therefore, [RFC7231] made that behavior conformant when the | | rewriting for 301 and 302; therefore, [RFC7231] made that | |||
| original request is POST. | | behavior conformant when the original request is POST. | |||
| A client SHOULD detect and intervene in cyclical redirections (i.e., | A client SHOULD detect and intervene in cyclical redirections (i.e., | |||
| "infinite" redirection loops). | "infinite" redirection loops). | |||
| Note: An earlier version of this specification recommended a | | *Note:* An earlier version of this specification recommended a | |||
| maximum of five redirections ([RFC2068], Section 10.3). Content | | maximum of five redirections ([RFC2068], Section 10.3). | |||
| developers need to be aware that some clients might implement such | | Content developers need to be aware that some clients might | |||
| a fixed limitation. | | implement such a fixed limitation. | |||
| 10.4.1. 300 Multiple Choices | 10.4.1. 300 Multiple Choices | |||
| The 300 (Multiple Choices) status code indicates that the target | The 300 (Multiple Choices) status code indicates that the target | |||
| resource has more than one representation, each with its own more | resource has more than one representation, each with its own more | |||
| specific identifier, and information about the alternatives is being | specific identifier, and information about the alternatives is being | |||
| provided so that the user (or user agent) can select a preferred | provided so that the user (or user agent) can select a preferred | |||
| representation by redirecting its request to one or more of those | representation by redirecting its request to one or more of those | |||
| identifiers. In other words, the server desires that the user agent | identifiers. In other words, the server desires that the user agent | |||
| engage in reactive negotiation to select the most appropriate | engage in reactive negotiation to select the most appropriate | |||
| skipping to change at page 135, line 45 ¶ | skipping to change at page 136, line 42 ¶ | |||
| this specification because HTTP tries to remain orthogonal to the | this specification because HTTP tries to remain orthogonal to the | |||
| definition of its payloads. In practice, the representation is | definition of its payloads. In practice, the representation is | |||
| provided in some easily parsed format believed to be acceptable to | provided in some easily parsed format believed to be acceptable to | |||
| the user agent, as determined by shared design or content | the user agent, as determined by shared design or content | |||
| negotiation, or in some commonly accepted hypertext format. | negotiation, or in some commonly accepted hypertext format. | |||
| A 300 response is heuristically cacheable; i.e., unless otherwise | A 300 response is heuristically cacheable; 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 [Caching]). | Section 4.2.2 of [Caching]). | |||
| Note: The original proposal for the 300 status code defined the | | *Note:* The original proposal for the 300 status code defined | |||
| URI header field as providing a list of alternative | | the URI header field as providing a list of alternative | |||
| representations, such that it would be usable for 200, 300, and | | representations, such that it would be usable for 200, 300, and | |||
| 406 responses and be transferred in responses to the HEAD method. | | 406 responses and be transferred in responses to the HEAD | |||
| However, lack of deployment and disagreement over syntax led to | | method. However, lack of deployment and disagreement over | |||
| both URI and Alternates (a subsequent proposal) being dropped from | | syntax led to both URI and Alternates (a subsequent proposal) | |||
| this specification. It is possible to communicate the list as a | | being dropped from this specification. It is possible to | |||
| Link header field value [RFC8288] whose members have a | | communicate the list as a Link header field value [RFC8288] | |||
| relationship of "alternate", though deployment is a chicken-and- | | whose members have a relationship of "alternate", though | |||
| egg problem. | | deployment is a chicken-and-egg problem. | |||
| 10.4.2. 301 Moved Permanently | 10.4.2. 301 Moved Permanently | |||
| The 301 (Moved Permanently) status code indicates that the target | The 301 (Moved Permanently) status code indicates that the target | |||
| resource has been assigned a new permanent URI and any future | resource has been assigned a new permanent URI and any future | |||
| references to this resource ought to use one of the enclosed URIs. | references to this resource ought to use one of the enclosed URIs. | |||
| Clients with link-editing capabilities ought to automatically re-link | Clients with link-editing capabilities ought to automatically re-link | |||
| references to the target URI to one or more of the new references | references to the target URI to one or more of the new references | |||
| sent by the server, where possible. | 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 historical reasons, a user agent MAY change the request | | *Note:* For historical reasons, a user agent MAY change the | |||
| method from POST to GET for the subsequent request. If this | | request method from POST to GET for the subsequent request. If | |||
| behavior is undesired, the 308 (Permanent Redirect) status code | | this behavior is undesired, the 308 (Permanent Redirect) status | |||
| can be used instead. | | code can be used instead. | |||
| A 301 response is heuristically cacheable; i.e., unless otherwise | A 301 response is heuristically cacheable; 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 [Caching]). | Section 4.2.2 of [Caching]). | |||
| 10.4.3. 302 Found | 10.4.3. 302 Found | |||
| The 302 (Found) status code indicates that the target resource | The 302 (Found) status code indicates that the target resource | |||
| 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 | |||
| target URI for future requests. | target 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 historical reasons, a user agent MAY change the request | | *Note:* For historical reasons, a user agent MAY change the | |||
| method from POST to GET for the subsequent request. If this | | request method from POST to GET for the subsequent request. If | |||
| behavior is undesired, the 307 (Temporary Redirect) status code | | this behavior is undesired, the 307 (Temporary Redirect) status | |||
| can be used instead. | | code can be used instead. | |||
| 10.4.4. 303 See Other | 10.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, which is intended to provide an | URI in the Location header field, which is intended to provide an | |||
| indirect response to the original request. A user agent can perform | indirect response to the original request. A user agent can perform | |||
| a retrieval request targeting that URI (a GET or HEAD request if | a retrieval request targeting that URI (a GET or HEAD request if | |||
| using HTTP), which might also be redirected, and present the eventual | using HTTP), which might also be redirected, and present the eventual | |||
| result as an answer to the original request. Note that the new URI | result as an answer to the original request. Note that the new URI | |||
| skipping to change at page 139, line 24 ¶ | skipping to change at page 140, line 24 ¶ | |||
| 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). | |||
| A 308 response is heuristically cacheable; i.e., unless otherwise | A 308 response is heuristically cacheable; 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 [Caching]). | Section 4.2.2 of [Caching]). | |||
| Note: This status code is much younger (June 2014) than its | | *Note:* This status code is much younger (June 2014) than its | |||
| sibling codes, and thus might not be recognized everywhere. See | | sibling codes, and thus might not be recognized everywhere. | |||
| Section 4 of [RFC7538] for deployment considerations. | | See Section 4 of [RFC7538] for deployment considerations. | |||
| 10.5. Client Error 4xx | 10.5. Client Error 4xx | |||
| The 4xx (Client Error) class of status code indicates that the client | The 4xx (Client Error) class of status code indicates that the client | |||
| seems to have erred. Except when responding to a HEAD request, the | seems to have erred. Except when responding to a HEAD request, the | |||
| server SHOULD send a representation containing an explanation of the | server SHOULD send a representation containing an explanation of the | |||
| error situation, and whether it is a temporary or permanent | error situation, and whether it is a temporary or permanent | |||
| condition. These status codes are applicable to any request method. | condition. These status codes are applicable to any request method. | |||
| User agents SHOULD display any included representation to the user. | User agents SHOULD display any included representation to the user. | |||
| skipping to change at page 141, line 40 ¶ | skipping to change at page 142, line 40 ¶ | |||
| not define any standard for such automatic selection, as described in | not define any standard for such automatic selection, as described in | |||
| Section 10.4.1. | Section 10.4.1. | |||
| 10.5.8. 407 Proxy Authentication Required | 10.5.8. 407 Proxy Authentication Required | |||
| The 407 (Proxy Authentication Required) status code is similar to 401 | The 407 (Proxy Authentication Required) status code is similar to 401 | |||
| (Unauthorized), but it indicates that the client needs to | (Unauthorized), but it indicates that the client needs to | |||
| authenticate itself in order to use a proxy for this request. The | authenticate itself in order to use a proxy for this request. The | |||
| proxy MUST send a Proxy-Authenticate header field (Section 11.3.2) | proxy MUST send a Proxy-Authenticate header field (Section 11.3.2) | |||
| containing a challenge applicable to that proxy for the request. The | containing a challenge applicable to that proxy for the request. The | |||
| client MAY repeat the request with a new or replaced Proxy- | client MAY repeat the request with a new or replaced | |||
| Authorization header field (Section 9.5.4). | Proxy-Authorization header field (Section 9.5.4). | |||
| 10.5.9. 408 Request Timeout | 10.5.9. 408 Request Timeout | |||
| The 408 (Request Timeout) status code indicates that the server did | The 408 (Request Timeout) status code indicates that the server did | |||
| not receive a complete request message within the time that it was | not receive a complete request message within the time that it was | |||
| prepared to wait. If the client has an outstanding request in | prepared to wait. If the client has an outstanding request in | |||
| transit, the client MAY repeat that request on a new connection. | transit, the client MAY repeat that request on a new connection. | |||
| 10.5.10. 409 Conflict | 10.5.10. 409 Conflict | |||
| skipping to change at page 142, line 38 ¶ | skipping to change at page 143, line 38 ¶ | |||
| is permanent, the status code 404 (Not Found) ought to be used | is permanent, the status code 404 (Not Found) ought to be used | |||
| instead. | instead. | |||
| The 410 response is primarily intended to assist the task of web | The 410 response is primarily intended to assist the task of web | |||
| maintenance by notifying the recipient that the resource is | maintenance by notifying the recipient that the resource is | |||
| intentionally unavailable and that the server owners desire that | intentionally unavailable and that the server owners desire that | |||
| remote links to that resource be removed. Such an event is common | remote links to that resource be removed. Such an event is common | |||
| for limited-time, promotional services and for resources belonging to | for limited-time, promotional services and for resources belonging to | |||
| individuals no longer associated with the origin server's site. It | individuals no longer associated with the origin server's site. It | |||
| is not necessary to mark all permanently unavailable resources as | is not necessary to mark all permanently unavailable resources as | |||
| "gone" or to keep the mark for any length of time -- that is left to | "gone" or to keep the mark for any length of time - that is left to | |||
| the discretion of the server owner. | the discretion of the server owner. | |||
| A 410 response is heuristically cacheable; i.e., unless otherwise | A 410 response is heuristically cacheable; 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 [Caching]). | Section 4.2.2 of [Caching]). | |||
| 10.5.12. 411 Length Required | 10.5.12. 411 Length Required | |||
| The 411 (Length Required) status code indicates that the server | The 411 (Length Required) status code indicates that the server | |||
| refuses to accept the request without a defined Content-Length | refuses to accept the request without a defined Content-Length | |||
| skipping to change at page 143, line 22 ¶ | skipping to change at page 144, line 22 ¶ | |||
| from being applied if the target resource is in an unexpected state. | from being applied if the target resource is in an unexpected state. | |||
| 10.5.14. 413 Payload Too Large | 10.5.14. 413 Payload Too Large | |||
| The 413 (Payload Too Large) status code indicates that the server is | The 413 (Payload Too Large) status code indicates that the server is | |||
| refusing to process a request because the request payload is larger | refusing to process a request because the request payload is larger | |||
| than the server is willing or able to process. The server MAY | than the server is willing or able to process. The server MAY | |||
| terminate the request, if the protocol version in use allows it; | terminate the request, if the protocol version in use allows it; | |||
| otherwise, the server MAY close the connection. | otherwise, the server MAY close the connection. | |||
| If the condition is temporary, the server SHOULD generate a Retry- | If the condition is temporary, the server SHOULD generate a | |||
| After header field to indicate that it is temporary and after what | Retry-After header field to indicate that it is temporary and after | |||
| time the client MAY try again. | what time the client MAY try again. | |||
| 10.5.15. 414 URI Too Long | 10.5.15. 414 URI Too Long | |||
| The 414 (URI Too Long) status code indicates that the server is | The 414 (URI Too Long) status code indicates that the server is | |||
| refusing to service the request because the target URI is longer than | refusing to service the request because the target URI is longer than | |||
| the server is willing to interpret. This rare condition is only | the server is willing to interpret. This rare condition is only | |||
| likely to occur when a client has improperly converted a POST request | likely to occur when a client has improperly converted a POST request | |||
| to a GET request with long query information, when the client has | to a GET request with long query information, when the client has | |||
| descended into a "black hole" of redirection (e.g., a redirected URI | descended into a "black hole" of redirection (e.g., a redirected URI | |||
| prefix that points to a suffix of itself) or when the server is under | prefix that points to a suffix of itself) or when the server is under | |||
| skipping to change at page 143, line 47 ¶ | skipping to change at page 144, line 47 ¶ | |||
| A 414 response is heuristically cacheable; i.e., unless otherwise | A 414 response is heuristically cacheable; 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 [Caching]). | Section 4.2.2 of [Caching]). | |||
| 10.5.16. 415 Unsupported Media Type | 10.5.16. 415 Unsupported Media Type | |||
| The 415 (Unsupported Media Type) status code indicates that the | The 415 (Unsupported Media Type) status code indicates that the | |||
| origin server is refusing to service the request because the payload | origin server is refusing to service the request because the payload | |||
| is in a format not supported by this method on the target resource. | is in a format not supported by this method on the target resource. | |||
| The format problem might be due to the request's indicated Content- | The format problem might be due to the request's indicated | |||
| Type or Content-Encoding, or as a result of inspecting the data | Content-Type or Content-Encoding, or as a result of inspecting the | |||
| directly. | data directly. | |||
| If the problem was caused by an unsupported content coding, the | If the problem was caused by an unsupported content coding, the | |||
| Accept-Encoding response header field (Section 9.4.3) ought to be | Accept-Encoding response header field (Section 9.4.3) ought to be | |||
| used to indicate what (if any) content codings would have been | used to indicate what (if any) content codings would have been | |||
| accepted in the request. | accepted in the request. | |||
| On the other hand, if the cause was an unsupported media type, the | On the other hand, if the cause was an unsupported media type, the | |||
| Accept response header field (Section 9.4.1) can be used to indicate | Accept response header field (Section 9.4.1) can be used to indicate | |||
| what media types would have been accepted in the request. | what media types would have been accepted in the request. | |||
| skipping to change at page 144, line 34 ¶ | skipping to change at page 145, line 37 ¶ | |||
| request, the sender SHOULD generate a Content-Range header field | request, the sender SHOULD generate a Content-Range header field | |||
| specifying the current length of the selected representation | specifying the current length of the selected representation | |||
| (Section 7.3.4). | (Section 7.3.4). | |||
| For example: | For example: | |||
| HTTP/1.1 416 Range Not Satisfiable | HTTP/1.1 416 Range Not Satisfiable | |||
| Date: Fri, 20 Jan 2012 15:41:54 GMT | Date: Fri, 20 Jan 2012 15:41:54 GMT | |||
| Content-Range: bytes */47022 | Content-Range: bytes */47022 | |||
| Note: Because servers are free to ignore Range, many | | *Note:* Because servers are free to ignore Range, many | |||
| implementations will respond with the entire selected | | implementations will respond with the entire selected | |||
| representation in a 200 (OK) response. That is partly because | | representation in a 200 (OK) response. That is partly because | |||
| most clients are prepared to receive a 200 (OK) to complete the | | most clients are prepared to receive a 200 (OK) to complete the | |||
| task (albeit less efficiently) and partly because clients might | | task (albeit less efficiently) and partly because clients might | |||
| not stop making an invalid partial request until they have | | not stop making an invalid partial request until they have | |||
| received a complete representation. Thus, clients cannot depend | | received a complete representation. Thus, clients cannot | |||
| on receiving a 416 (Range Not Satisfiable) response even when it | | depend on receiving a 416 (Range Not Satisfiable) response even | |||
| is most appropriate. | | when it is most appropriate. | |||
| 10.5.18. 417 Expectation Failed | 10.5.18. 417 Expectation Failed | |||
| The 417 (Expectation Failed) status code indicates that the | The 417 (Expectation Failed) status code indicates that the | |||
| expectation given in the request's Expect header field | expectation given in the request's Expect header field | |||
| (Section 9.1.1) could not be met by at least one of the inbound | (Section 9.1.1) could not be met by at least one of the inbound | |||
| servers. | servers. | |||
| 10.5.19. 418 (Unused) | 10.5.19. 418 (Unused) | |||
| skipping to change at page 146, line 42 ¶ | skipping to change at page 147, line 48 ¶ | |||
| 10.6.4. 503 Service Unavailable | 10.6.4. 503 Service Unavailable | |||
| The 503 (Service Unavailable) status code indicates that the server | The 503 (Service Unavailable) status code indicates that the server | |||
| is currently unable to handle the request due to a temporary overload | is currently unable to handle the request due to a temporary overload | |||
| or scheduled maintenance, which will likely be alleviated after some | or scheduled maintenance, which will likely be alleviated after some | |||
| delay. The server MAY send a Retry-After header field | delay. The server MAY send a Retry-After header field | |||
| (Section 11.1.3) to suggest an appropriate amount of time for the | (Section 11.1.3) to suggest an appropriate amount of time for the | |||
| client to wait before retrying the request. | client to wait before retrying the request. | |||
| Note: The existence of the 503 status code does not imply that a | | *Note:* The existence of the 503 status code does not imply | |||
| server has to use it when becoming overloaded. Some servers might | | that a server has to use it when becoming overloaded. Some | |||
| simply refuse the connection. | | servers might simply refuse the connection. | |||
| 10.6.5. 504 Gateway Timeout | 10.6.5. 504 Gateway Timeout | |||
| The 504 (Gateway Timeout) status code indicates that the server, | The 504 (Gateway Timeout) status code indicates that the server, | |||
| while acting as a gateway or proxy, did not receive a timely response | while acting as a gateway or proxy, did not receive a timely response | |||
| from an upstream server it needed to access in order to complete the | from an upstream server it needed to access in order to complete the | |||
| request. | request. | |||
| 10.6.6. 505 HTTP Version Not Supported | 10.6.6. 505 HTTP Version Not Supported | |||
| skipping to change at page 148, line 23 ¶ | skipping to change at page 149, line 36 ¶ | |||
| The definition of a new status code ought to explain the request | The definition of a new status code ought to explain the request | |||
| conditions that would cause a response containing that status code | conditions that would cause a response containing that status code | |||
| (e.g., combinations of request header fields and/or method(s)) along | (e.g., combinations of request header fields and/or method(s)) along | |||
| with any dependencies on response header fields (e.g., what fields | with any dependencies on response header fields (e.g., what fields | |||
| are required, what fields can modify the semantics, and what field | are required, what fields can modify the semantics, and what field | |||
| semantics are further refined when used with the new status code). | semantics are further refined when used with the new status code). | |||
| By default, a status code applies only to the request corresponding | By default, a status code applies only to the request corresponding | |||
| to the response it occurs within. If a status code applies to a | to the response it occurs within. If a status code applies to a | |||
| larger scope of applicability -- for example, all requests to the | larger scope of applicability - for example, all requests to the | |||
| resource in question, or all requests to a server -- this must be | resource in question, or all requests to a server - this must be | |||
| explicitly specified. When doing so, it should be noted that not all | explicitly specified. When doing so, it should be noted that not all | |||
| clients can be expected to consistently apply a larger scope, because | clients can be expected to consistently apply a larger scope, because | |||
| they might not understand the new status code. | they might not understand the new status code. | |||
| The definition of a new status code ought to specify whether or not | The definition of a new status code ought to specify whether or not | |||
| it is cacheable. Note that all status codes can be cached if the | it is cacheable. Note that all status codes can be cached if the | |||
| response they occur in has explicit freshness information; however, | response they occur in has explicit freshness information; however, | |||
| status codes that are defined as being cacheable are allowed to be | status codes that are defined as being cacheable are allowed to be | |||
| cached without explicit freshness information. Likewise, the | cached without explicit freshness information. Likewise, the | |||
| definition of a status code can place constraints upon cache | definition of a status code can place constraints upon cache | |||
| skipping to change at page 149, line 13 ¶ | skipping to change at page 150, line 24 ¶ | |||
| semantics of the request method and/or response status code. | semantics of the request method and/or response status code. | |||
| 11.1. Control Data | 11.1. Control Data | |||
| Response header fields can supply control data that supplements the | Response header fields can supply control data that supplements the | |||
| status code, directs caching, or instructs the client where to go | status code, directs caching, or instructs the client where to go | |||
| next. | next. | |||
| +---------------+--------------------------+ | +---------------+--------------------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +---------------+--------------------------+ | ||||
| | Age | Section 5.1 of [Caching] | | | Age | Section 5.1 of [Caching] | | |||
| | Cache-Control | Section 5.2 of [Caching] | | | Cache-Control | Section 5.2 of [Caching] | | |||
| | Expires | Section 5.3 of [Caching] | | | Expires | Section 5.3 of [Caching] | | |||
| | Date | Section 11.1.1 | | | Date | Section 11.1.1 | | |||
| | Location | Section 11.1.2 | | | Location | Section 11.1.2 | | |||
| | Retry-After | Section 11.1.3 | | | Retry-After | Section 11.1.3 | | |||
| | Vary | Section 11.1.4 | | | Vary | Section 11.1.4 | | |||
| | Warning | Section 5.5 of [Caching] | | | Warning | Section 5.5 of [Caching] | | |||
| +---------------+--------------------------+ | +---------------+--------------------------+ | |||
| Table 17 | ||||
| 11.1.1. Date | 11.1.1. Date | |||
| The "Date" header field represents the date and time at which the | The "Date" header field represents the date and time at which the | |||
| message was originated, having the same semantics as the Origination | message was originated, having the same semantics as the Origination | |||
| Date Field (orig-date) defined in Section 3.6.1 of [RFC5322]. The | Date Field (orig-date) defined in Section 3.6.1 of [RFC5322]. The | |||
| field value is an HTTP-date, as defined in Section 5.4.1.5. | field value is an HTTP-date, as defined in Section 5.4.1.5. | |||
| Date = HTTP-date | Date = HTTP-date | |||
| An example is | An example is | |||
| skipping to change at page 151, line 16 ¶ | skipping to change at page 152, line 35 ¶ | |||
| which suggests that the user agent redirect to | which suggests that the user agent redirect to | |||
| "http://www.example.net/index.html#larry", preserving the original | "http://www.example.net/index.html#larry", preserving the original | |||
| fragment identifier. | fragment identifier. | |||
| There are circumstances in which a fragment identifier in a Location | There are circumstances in which a fragment identifier in a Location | |||
| value would not be appropriate. For example, the Location header | value would not be appropriate. For example, the Location header | |||
| field in a 201 (Created) response is supposed to provide a URI that | field in a 201 (Created) response is supposed to provide a URI that | |||
| is specific to the created resource. | is specific to the created resource. | |||
| Note: Some recipients attempt to recover from Location fields that | | *Note:* Some recipients attempt to recover from Location fields | |||
| are not valid URI references. This specification does not mandate | | that are not valid URI references. This specification does not | |||
| or define such processing, but does allow it for the sake of | | mandate or define such processing, but does allow it for the | |||
| robustness. | | sake of robustness. | |||
| Note: The Content-Location header field (Section 7.2.5) differs | | *Note:* The Content-Location header field (Section 7.2.5) | |||
| from Location in that the Content-Location refers to the most | | differs from Location in that the Content-Location refers to | |||
| specific resource corresponding to the enclosed representation. | | the most specific resource corresponding to the enclosed | |||
| It is therefore possible for a response to contain both the | | representation. It is therefore possible for a response to | |||
| Location and Content-Location header fields. | | contain both the Location and Content-Location header fields. | |||
| 11.1.3. Retry-After | 11.1.3. Retry-After | |||
| Servers send the "Retry-After" header field to indicate how long the | Servers send the "Retry-After" header field to indicate how long the | |||
| user agent ought to wait before making a follow-up request. When | user agent ought to wait before making a follow-up request. When | |||
| sent with a 503 (Service Unavailable) response, Retry-After indicates | sent with a 503 (Service Unavailable) response, Retry-After indicates | |||
| how long the service is expected to be unavailable to the client. | how long the service is expected to be unavailable to the client. | |||
| When sent with any 3xx (Redirection) response, Retry-After indicates | When sent with any 3xx (Redirection) response, Retry-After indicates | |||
| the minimum time that the user agent is asked to wait before issuing | the minimum time that the user agent is asked to wait before issuing | |||
| the redirected request. | the redirected request. | |||
| skipping to change at page 153, line 38 ¶ | skipping to change at page 155, line 12 ¶ | |||
| fields describe the new representation that has replaced the prior | fields describe the new representation that has replaced the prior | |||
| selected representation as a result of processing the request. | selected representation as a result of processing the request. | |||
| For example, an ETag field in a 201 (Created) response communicates | For example, an ETag field in a 201 (Created) response communicates | |||
| the entity-tag of the newly created resource's representation, so | the entity-tag of the newly created resource's representation, so | |||
| that it can be used in later conditional requests to prevent the | that it can be used in later conditional requests to prevent the | |||
| "lost update" problem Section 9.2. | "lost update" problem Section 9.2. | |||
| +---------------+----------------+ | +---------------+----------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +---------------+----------------+ | ||||
| | ETag | Section 11.2.3 | | | ETag | Section 11.2.3 | | |||
| | Last-Modified | Section 11.2.2 | | | Last-Modified | Section 11.2.2 | | |||
| +---------------+----------------+ | +---------------+----------------+ | |||
| Table 18 | ||||
| This specification defines two forms of metadata that are commonly | This specification defines two forms of metadata that are commonly | |||
| used to observe resource state and test for preconditions: | used to observe resource state and test for preconditions: | |||
| modification dates (Section 11.2.2) and opaque entity tags | modification dates (Section 11.2.2) and opaque entity tags | |||
| (Section 11.2.3). Additional metadata that reflects resource state | (Section 11.2.3). Additional metadata that reflects resource state | |||
| has been defined by various extensions of HTTP, such as Web | has been defined by various extensions of HTTP, such as Web | |||
| Distributed Authoring and Versioning (WebDAV, [RFC4918]), that are | Distributed Authoring and Versioning (WebDAV, [RFC4918]), that are | |||
| beyond the scope of this specification. A resource metadata value is | beyond the scope of this specification. A resource metadata value is | |||
| referred to as a "validator" when it is used within a precondition. | referred to as a "validator" when it is used within a precondition. | |||
| 11.2.1. Weak versus Strong | 11.2.1. Weak versus Strong | |||
| skipping to change at page 157, line 11 ¶ | skipping to change at page 158, line 32 ¶ | |||
| o The validator is being compared by an origin server to the actual | o The validator is being compared by an origin server to the actual | |||
| current validator for the representation and, | current validator for the representation and, | |||
| o That origin server reliably knows that the associated | o That origin server reliably knows that the associated | |||
| representation did not change twice during the second covered by | representation did not change twice during the second covered by | |||
| the presented validator. | the presented validator. | |||
| or | or | |||
| o The validator is about to be used by a client in an If-Modified- | o The validator is about to be used by a client in an | |||
| Since, If-Unmodified-Since, or If-Range header field, because the | If-Modified-Since, If-Unmodified-Since, or If-Range header field, | |||
| client has a cache entry for the associated representation, and | because the client has a cache entry for the associated | |||
| representation, and | ||||
| o That cache entry includes a Date value, which gives the time when | o That cache entry includes a Date value, which gives the time when | |||
| the origin server sent the original response, and | the origin server sent the original response, and | |||
| o The presented Last-Modified time is at least 60 seconds before the | o The presented Last-Modified time is at least 60 seconds before the | |||
| Date value. | Date value. | |||
| or | or | |||
| o The validator is being compared by an intermediate cache to the | o The validator is being compared by an intermediate cache to the | |||
| skipping to change at page 158, line 13 ¶ | skipping to change at page 159, line 35 ¶ | |||
| prefixed by a weakness indicator. | prefixed by a weakness indicator. | |||
| ETag = entity-tag | ETag = entity-tag | |||
| entity-tag = [ weak ] opaque-tag | entity-tag = [ weak ] opaque-tag | |||
| weak = %s"W/" | weak = %s"W/" | |||
| opaque-tag = DQUOTE *etagc DQUOTE | opaque-tag = DQUOTE *etagc DQUOTE | |||
| etagc = %x21 / %x23-7E / obs-text | etagc = %x21 / %x23-7E / obs-text | |||
| ; VCHAR except double quotes, plus obs-text | ; VCHAR except double quotes, plus obs-text | |||
| Note: Previously, opaque-tag was defined to be a quoted-string | | *Note:* Previously, opaque-tag was defined to be a quoted- | |||
| ([RFC2616], Section 3.11); thus, some recipients might perform | | string ([RFC2616], Section 3.11); thus, some recipients might | |||
| backslash unescaping. Servers therefore ought to avoid backslash | | perform backslash unescaping. Servers therefore ought to avoid | |||
| characters in entity tags. | | backslash characters in entity tags. | |||
| An entity-tag can be more reliable for validation than a modification | An entity-tag can be more reliable for validation than a modification | |||
| date in situations where it is inconvenient to store modification | date in situations where it is inconvenient to store modification | |||
| dates, where the one-second resolution of HTTP date values is not | dates, where the one-second resolution of HTTP date values is not | |||
| sufficient, or where modification dates are not consistently | sufficient, or where modification dates are not consistently | |||
| maintained. | maintained. | |||
| Examples: | Examples: | |||
| ETag: "xyzzy" | ETag: "xyzzy" | |||
| skipping to change at page 159, line 34 ¶ | skipping to change at page 161, line 10 ¶ | |||
| o Weak comparison: two entity-tags are equivalent if their opaque- | o Weak comparison: two entity-tags are equivalent if their opaque- | |||
| tags match character-by-character, regardless of either or both | tags match character-by-character, regardless of either or both | |||
| being tagged as "weak". | being tagged as "weak". | |||
| The example below shows the results for a set of entity-tag pairs and | The example below shows the results for a set of entity-tag pairs and | |||
| both the weak and strong comparison function results: | both the weak and strong comparison function results: | |||
| +--------+--------+-------------------+-----------------+ | +--------+--------+-------------------+-----------------+ | |||
| | ETag 1 | ETag 2 | Strong Comparison | Weak Comparison | | | ETag 1 | ETag 2 | Strong Comparison | Weak Comparison | | |||
| +--------+--------+-------------------+-----------------+ | ||||
| | W/"1" | W/"1" | no match | match | | | W/"1" | W/"1" | no match | match | | |||
| | W/"1" | W/"2" | no match | no match | | | W/"1" | W/"2" | no match | no match | | |||
| | W/"1" | "1" | no match | match | | | W/"1" | "1" | no match | match | | |||
| | "1" | "1" | match | match | | | "1" | "1" | match | match | | |||
| +--------+--------+-------------------+-----------------+ | +--------+--------+-------------------+-----------------+ | |||
| Table 19 | ||||
| 11.2.3.3. Example: Entity-Tags Varying on Content-Negotiated Resources | 11.2.3.3. Example: Entity-Tags Varying on Content-Negotiated Resources | |||
| Consider a resource that is subject to content negotiation | Consider a resource that is subject to content negotiation | |||
| (Section 7.4), and where the representations sent in response to a | (Section 7.4), and where the representations sent in response to a | |||
| GET request vary based on the Accept-Encoding request header field | GET request vary based on the Accept-Encoding request header field | |||
| (Section 9.4.3): | (Section 9.4.3): | |||
| >> Request: | >> Request: | |||
| GET /index HTTP/1.1 | GET /index HTTP/1.1 | |||
| skipping to change at page 160, line 42 ¶ | skipping to change at page 162, line 17 ¶ | |||
| HTTP/1.1 200 OK | HTTP/1.1 200 OK | |||
| Date: Fri, 26 Mar 2010 00:05:00 GMT | Date: Fri, 26 Mar 2010 00:05:00 GMT | |||
| ETag: "123-b" | ETag: "123-b" | |||
| Content-Length: 43 | Content-Length: 43 | |||
| Vary: Accept-Encoding | Vary: Accept-Encoding | |||
| Content-Type: text/plain | Content-Type: text/plain | |||
| Content-Encoding: gzip | Content-Encoding: gzip | |||
| ...binary data... | ...binary data... | |||
| Note: Content codings are a property of the representation data, | | *Note:* Content codings are a property of the representation | |||
| so a strong entity-tag for a content-encoded representation has to | | data, so a strong entity-tag for a content-encoded | |||
| be distinct from the entity tag of an unencoded representation to | | representation has to be distinct from the entity tag of an | |||
| prevent potential conflicts during cache updates and range | | unencoded representation to prevent potential conflicts during | |||
| requests. In contrast, transfer codings (Section 7 of | | cache updates and range requests. In contrast, transfer | |||
| [Messaging]) apply only during message transfer and do not result | | codings (Section 7 of [Messaging]) apply only during message | |||
| in distinct entity-tags. | | transfer and do not result in distinct entity-tags. | |||
| 11.2.4. When to Use Entity-Tags and Last-Modified Dates | 11.2.4. When to Use Entity-Tags and Last-Modified Dates | |||
| In 200 (OK) responses to GET or HEAD, an origin server: | In 200 (OK) responses to GET or HEAD, an origin server: | |||
| o SHOULD send an entity-tag validator unless it is not feasible to | o SHOULD send an entity-tag validator unless it is not feasible to | |||
| generate one. | generate one. | |||
| o MAY send a weak entity-tag instead of a strong entity-tag, if | o MAY send a weak entity-tag instead of a strong entity-tag, if | |||
| performance considerations support the use of weak entity-tags, or | performance considerations support the use of weak entity-tags, or | |||
| skipping to change at page 161, line 49 ¶ | skipping to change at page 163, line 22 ¶ | |||
| origin server. This allows both HTTP/1.0 and HTTP/1.1 caches to | origin server. This allows both HTTP/1.0 and HTTP/1.1 caches to | |||
| respond appropriately. | respond appropriately. | |||
| 11.3. Authentication Challenges | 11.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. | |||
| +--------------------+----------------+ | +--------------------+----------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +--------------------+----------------+ | ||||
| | WWW-Authenticate | Section 11.3.1 | | | WWW-Authenticate | Section 11.3.1 | | |||
| | Proxy-Authenticate | Section 11.3.2 | | | Proxy-Authenticate | Section 11.3.2 | | |||
| +--------------------+----------------+ | +--------------------+----------------+ | |||
| Table 20 | ||||
| Furthermore, the "Authentication-Info" and "Proxy-Authentication- | Furthermore, the "Authentication-Info" and "Proxy-Authentication- | |||
| Info" response header fields are defined for use in authentication | Info" response header fields are defined for use in authentication | |||
| schemes that need to return information once the client's | schemes that need to return information once the client's | |||
| authentication credentials have been accepted. | authentication credentials have been accepted. | |||
| +---------------------------+----------------+ | +---------------------------+----------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +---------------------------+----------------+ | ||||
| | Authentication-Info | Section 11.3.3 | | | Authentication-Info | Section 11.3.3 | | |||
| | Proxy-Authentication-Info | Section 11.3.4 | | | Proxy-Authentication-Info | Section 11.3.4 | | |||
| +---------------------------+----------------+ | +---------------------------+----------------+ | |||
| Table 21 | ||||
| 11.3.1. WWW-Authenticate | 11.3.1. WWW-Authenticate | |||
| The "WWW-Authenticate" header field indicates the authentication | The "WWW-Authenticate" header field indicates the authentication | |||
| scheme(s) and parameters applicable to the target resource. | scheme(s) and parameters applicable to the target resource. | |||
| WWW-Authenticate = 1#challenge | WWW-Authenticate = 1#challenge | |||
| A server generating a 401 (Unauthorized) response MUST send a WWW- | A server generating a 401 (Unauthorized) response MUST send a WWW- | |||
| Authenticate header field containing at least one challenge. A | Authenticate header field containing at least one challenge. A | |||
| server MAY generate a WWW-Authenticate header field in other response | server MAY generate a WWW-Authenticate header field in other response | |||
| skipping to change at page 162, line 48 ¶ | skipping to change at page 164, line 24 ¶ | |||
| For instance: | For instance: | |||
| WWW-Authenticate: Newauth realm="apps", type=1, | WWW-Authenticate: Newauth realm="apps", type=1, | |||
| title="Login to \"apps\"", Basic realm="simple" | title="Login to \"apps\"", Basic realm="simple" | |||
| This header field contains two challenges; one for the "Newauth" | This header field contains two challenges; one for the "Newauth" | |||
| scheme with a realm value of "apps", and two additional parameters | scheme with a realm value of "apps", and two additional parameters | |||
| "type" and "title", and another one for the "Basic" scheme with a | "type" and "title", and another one for the "Basic" scheme with a | |||
| realm value of "simple". | realm value of "simple". | |||
| Note: The challenge grammar production uses the list syntax as | | *Note:* The challenge grammar production uses the list syntax | |||
| well. Therefore, a sequence of comma, whitespace, and comma can | | as well. Therefore, a sequence of comma, whitespace, and comma | |||
| be considered either as applying to the preceding challenge, or to | | can be considered either as applying to the preceding | |||
| be an empty entry in the list of challenges. In practice, this | | challenge, or to be an empty entry in the list of challenges. | |||
| ambiguity does not affect the semantics of the header field value | | In practice, this ambiguity does not affect the semantics of | |||
| and thus is harmless. | | the header field value and thus is harmless. | |||
| 11.3.2. Proxy-Authenticate | 11.3.2. Proxy-Authenticate | |||
| The "Proxy-Authenticate" header field consists of at least one | The "Proxy-Authenticate" header field consists of at least one | |||
| challenge that indicates the authentication scheme(s) and parameters | challenge that indicates the authentication scheme(s) and parameters | |||
| applicable to the proxy for this request. A proxy MUST send at least | applicable to the proxy for this request. A proxy MUST send at least | |||
| one Proxy-Authenticate header field in each 407 (Proxy Authentication | one Proxy-Authenticate header field in each 407 (Proxy Authentication | |||
| Required) response that it generates. | Required) response that it generates. | |||
| Proxy-Authenticate = 1#challenge | Proxy-Authenticate = 1#challenge | |||
| skipping to change at page 165, line 12 ¶ | skipping to change at page 166, line 34 ¶ | |||
| Proxy-Authentication-Info is being forwarded because each proxy will | Proxy-Authentication-Info is being forwarded because each proxy will | |||
| send the same field value. | send the same field value. | |||
| 11.4. Response Context | 11.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. | |||
| +---------------+----------------+ | +---------------+----------------+ | |||
| | Field Name | Defined in... | | | Field Name | Defined in... | | |||
| +---------------+----------------+ | ||||
| | Accept-Ranges | Section 11.4.1 | | | Accept-Ranges | Section 11.4.1 | | |||
| | Allow | Section 11.4.2 | | | Allow | Section 11.4.2 | | |||
| | Server | Section 11.4.3 | | | Server | Section 11.4.3 | | |||
| +---------------+----------------+ | +---------------+----------------+ | |||
| Table 22 | ||||
| 11.4.1. Accept-Ranges | 11.4.1. Accept-Ranges | |||
| The "Accept-Ranges" header field allows a server to indicate that it | The "Accept-Ranges" header field allows a server to indicate that it | |||
| supports range requests for the target resource. | supports range requests for the target resource. | |||
| Accept-Ranges = acceptable-ranges | Accept-Ranges = acceptable-ranges | |||
| acceptable-ranges = 1#range-unit / "none" | acceptable-ranges = 1#range-unit / "none" | |||
| An origin server that supports byte-range requests for a given target | An origin server that supports byte-range requests for a given target | |||
| resource MAY send | resource MAY send | |||
| skipping to change at page 166, line 14 ¶ | skipping to change at page 167, line 36 ¶ | |||
| Allow: GET, HEAD, PUT | Allow: GET, HEAD, PUT | |||
| The actual set of allowed methods is defined by the origin server at | The actual set of allowed methods is defined by the origin server at | |||
| the time of each request. An origin server MUST generate an Allow | the time of each request. An origin server MUST generate an Allow | |||
| field in a 405 (Method Not Allowed) response and MAY do so in any | field in a 405 (Method Not Allowed) response and MAY do so in any | |||
| other response. An empty Allow field value indicates that the | other response. An empty Allow field value indicates that the | |||
| resource allows no methods, which might occur in a 405 response if | resource allows no methods, which might occur in a 405 response if | |||
| the resource has been temporarily disabled by configuration. | the resource has been temporarily disabled by configuration. | |||
| A proxy MUST NOT modify the Allow header field -- it does not need to | A proxy MUST NOT modify the Allow header field - it does not need to | |||
| understand all of the indicated methods in order to handle them | understand all of the indicated methods in order to handle them | |||
| according to the generic message handling rules. | according to the generic message handling rules. | |||
| 11.4.3. Server | 11.4.3. Server | |||
| The "Server" header field contains information about the software | The "Server" header field contains information about the software | |||
| used by the origin server to handle the request, which is often used | used by the origin server to handle the request, which is often used | |||
| by clients to help identify the scope of reported interoperability | by clients to help identify the scope of reported interoperability | |||
| problems, to work around or tailor requests to avoid particular | problems, to work around or tailor requests to avoid particular | |||
| server limitations, and for analytics regarding server or operating | server limitations, and for analytics regarding server or operating | |||
| skipping to change at page 178, line 44 ¶ | skipping to change at page 180, line 35 ¶ | |||
| 1. use this document as "Reference", and | 1. use this document as "Reference", and | |||
| 2. when currently unspecified, set "Assignee" to "IESG" and | 2. when currently unspecified, set "Assignee" to "IESG" and | |||
| "Contact" to "IETF_Chair". | "Contact" to "IETF_Chair". | |||
| 14. References | 14. References | |||
| 14.1. Normative References | 14.1. Normative References | |||
| [Caching] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [Caching] Fielding, R., Ed., Nottingham, M., Ed., and J. F. Reschke, | |||
| Ed., "HTTP Caching", draft-ietf-httpbis-cache-09 (work in | Ed., "HTTP Caching", Work in Progress, Internet-Draft, | |||
| progress), July 2020. | draft-ietf-httpbis-cache-10, July 12, 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-httpbis-cache-10>. | ||||
| [Messaging] | [Messaging] | |||
| Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | Fielding, R., Ed., Nottingham, M., Ed., and J. F. Reschke, | |||
| Ed., "HTTP/1.1 Messaging", draft-ietf-httpbis-messaging-09 | Ed., "HTTP/1.1 Messaging", Work in Progress, Internet- | |||
| (work in progress), July 2020. | Draft, draft-ietf-httpbis-messaging-10, July 12, 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-httpbis-messaging- | ||||
| 10>. | ||||
| [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | |||
| RFC 793, DOI 10.17487/RFC0793, September 1981, | RFC 793, DOI 10.17487/RFC0793, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc793>. | <https://www.rfc-editor.org/info/rfc793>. | |||
| [RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data Format | [RFC1950] Deutsch, L.P. and J-L. Gailly, "ZLIB Compressed Data | |||
| Specification version 3.3", RFC 1950, | Format Specification version 3.3", RFC 1950, | |||
| DOI 10.17487/RFC1950, May 1996, | DOI 10.17487/RFC1950, May 1996, | |||
| <https://www.rfc-editor.org/info/rfc1950>. | <https://www.rfc-editor.org/info/rfc1950>. | |||
| [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification | [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification | |||
| version 1.3", RFC 1951, DOI 10.17487/RFC1951, May 1996, | version 1.3", RFC 1951, DOI 10.17487/RFC1951, May 1996, | |||
| <https://www.rfc-editor.org/info/rfc1951>. | <https://www.rfc-editor.org/info/rfc1951>. | |||
| [RFC1952] Deutsch, P., Gailly, J-L., Adler, M., Deutsch, L., and G. | [RFC1952] Deutsch, P., Gailly, J-L., Adler, M., Deutsch, L.P., and | |||
| Randers-Pehrson, "GZIP file format specification version | G. Randers-Pehrson, "GZIP file format specification | |||
| 4.3", RFC 1952, DOI 10.17487/RFC1952, May 1996, | version 4.3", RFC 1952, DOI 10.17487/RFC1952, May 1996, | |||
| <https://www.rfc-editor.org/info/rfc1952>. | <https://www.rfc-editor.org/info/rfc1952>. | |||
| [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2045] Freed, N. and N.S. Borenstein, "Multipurpose Internet Mail | |||
| Extensions (MIME) Part One: Format of Internet Message | Extensions (MIME) Part One: Format of Internet Message | |||
| Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, | Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, | |||
| <https://www.rfc-editor.org/info/rfc2045>. | <https://www.rfc-editor.org/info/rfc2045>. | |||
| [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
| Extensions (MIME) Part Two: Media Types", RFC 2046, | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
| DOI 10.17487/RFC2046, November 1996, | DOI 10.17487/RFC2046, November 1996, | |||
| <https://www.rfc-editor.org/info/rfc2046>. | <https://www.rfc-editor.org/info/rfc2046>. | |||
| [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 180, line 37 ¶ | skipping to change at page 182, line 32 ¶ | |||
| <https://www.rfc-editor.org/info/rfc7405>. | <https://www.rfc-editor.org/info/rfc7405>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [USASCII] American National Standards Institute, "Coded Character | [USASCII] American National Standards Institute, "Coded Character | |||
| Set -- 7-bit American Standard Code for Information | Set -- 7-bit American Standard Code for Information | |||
| Interchange", ANSI X3.4, 1986. | Interchange", ANSI X3.4, 1986. | |||
| [Welch] Welch, T., "A Technique for High-Performance Data | [Welch] Welch, T. A., "A Technique for High-Performance Data | |||
| Compression", IEEE Computer 17(6), | Compression", IEEE Computer 17(6), | |||
| DOI 10.1109/MC.1984.1659158, June 1984, | DOI 10.1109/MC.1984.1659158, June 1984, | |||
| <https://ieeexplore.ieee.org/document/1659158/>. | <https://ieeexplore.ieee.org/document/1659158/>. | |||
| 14.2. Informative References | 14.2. Informative References | |||
| [BCP13] Freed, N., Klensin, J., and T. Hansen, "Media Type | [BCP13] Freed, N., Klensin, J., and T. Hansen, "Media Type | |||
| Specifications and Registration Procedures", BCP 13, | Specifications and Registration Procedures", BCP 13, | |||
| RFC 6838, January 2013, | RFC 6838, January 2013, | |||
| <https://www.rfc-editor.org/info/bcp13>. | <https://www.rfc-editor.org/info/bcp13>. | |||
| skipping to change at page 181, line 14 ¶ | skipping to change at page 183, line 9 ¶ | |||
| [BCP35] Thaler, D., Ed., Hansen, T., and T. Hardie, "Guidelines | [BCP35] Thaler, D., Ed., Hansen, T., and T. Hardie, "Guidelines | |||
| and Registration Procedures for URI Schemes", BCP 35, | and Registration Procedures for URI Schemes", BCP 35, | |||
| RFC 7595, June 2015, | RFC 7595, June 2015, | |||
| <https://www.rfc-editor.org/info/bcp35>. | <https://www.rfc-editor.org/info/bcp35>. | |||
| [Bujlow] Bujlow, T., Carela-Espanol, V., Sole-Pareta, J., and P. | [Bujlow] Bujlow, T., Carela-Espanol, V., Sole-Pareta, J., and P. | |||
| Barlet-Ros, "A Survey on Web Tracking: Mechanisms, | Barlet-Ros, "A Survey on Web Tracking: Mechanisms, | |||
| Implications, and Defenses", | Implications, and Defenses", | |||
| DOI 10.1109/JPROC.2016.2637878, Proceedings of the | DOI 10.1109/JPROC.2016.2637878, Proceedings of the | |||
| IEEE 105(8), August 2017. | IEEE 105(8), August 2017, | |||
| <https://doi.org/10.1109/JPROC.2016.2637878>. | ||||
| [Err1912] RFC Errata, Erratum ID 1912, RFC 2978, | [Err1912] RFC Errata, Erratum ID 1912, RFC 2978, | |||
| <https://www.rfc-editor.org/errata/eid1912>. | <https://www.rfc-editor.org/errata/eid1912>. | |||
| [Err5433] RFC Errata, Erratum ID 5433, RFC 2978, | [Err5433] RFC Errata, Erratum ID 5433, RFC 2978, | |||
| <https://www.rfc-editor.org/errata/eid5433>. | <https://www.rfc-editor.org/errata/eid5433>. | |||
| [Georgiev] | [Georgiev] Georgiev, M., Iyengar, S., Jana, S., Anubhai, R., Boneh, | |||
| Georgiev, M., Iyengar, S., Jana, S., Anubhai, R., Boneh, | ||||
| D., and V. Shmatikov, "The Most Dangerous Code in the | D., and V. Shmatikov, "The Most Dangerous Code in the | |||
| World: Validating SSL Certificates in Non-browser | World: Validating SSL Certificates in Non-browser | |||
| Software", DOI 10.1145/2382196.2382204, In Proceedings of | Software", DOI 10.1145/2382196.2382204, In Proceedings of | |||
| the 2012 ACM Conference on Computer and Communications | the 2012 ACM Conference on Computer and Communications | |||
| Security (CCS '12), pp. 38-49, October 2012. | Security (CCS '12), pp. 38-49, October 2012, | |||
| <https://doi.org/10.1145/2382196.2382204>. | ||||
| [ISO-8859-1] | [ISO-8859-1] | |||
| International Organization for Standardization, | International Organization for Standardization, | |||
| "Information technology -- 8-bit single-byte coded graphic | "Information technology -- 8-bit single-byte coded graphic | |||
| character sets -- Part 1: Latin alphabet No. 1", ISO/ | character sets -- Part 1: Latin alphabet No. 1", ISO/ | |||
| IEC 8859-1:1998, 1998. | IEC 8859-1:1998, 1998. | |||
| [Kri2001] Kristol, D., "HTTP Cookies: Standards, Privacy, and | [Kri2001] Kristol, D., "HTTP Cookies: Standards, Privacy, and | |||
| Politics", ACM Transactions on Internet Technology 1(2), | Politics", ACM Transactions on Internet Technology 1(2), | |||
| November 2001, <http://arxiv.org/abs/cs.SE/0105018>. | November 2001, <http://arxiv.org/abs/cs.SE/0105018>. | |||
| [OWASP] van der Stock, A., Ed., "A Guide to Building Secure Web | [OWASP] van der Stock, A., Ed., "A Guide to Building Secure Web | |||
| Applications and Web Services", The Open Web Application | Applications and Web Services", The Open Web Application | |||
| Security Project (OWASP) 2.0.1, July 2005, | Security Project (OWASP) 2.0.1, July 27, 2005, | |||
| <https://www.owasp.org/>. | <https://www.owasp.org/>. | |||
| [REST] Fielding, R., "Architectural Styles and the Design of | [REST] Fielding, R.T., "Architectural Styles and the Design of | |||
| Network-based Software Architectures", | Network-based Software Architectures", | |||
| Doctoral Dissertation, University of California, Irvine, | Doctoral Dissertation, University of California, Irvine, | |||
| September 2000, | September 2000, | |||
| <https://roy.gbiv.com/pubs/dissertation/top.htm>. | <https://roy.gbiv.com/pubs/dissertation/top.htm>. | |||
| [RFC1919] Chatel, M., "Classical versus Transparent IP Proxies", | [RFC1919] Chatel, M., "Classical versus Transparent IP Proxies", | |||
| RFC 1919, DOI 10.17487/RFC1919, March 1996, | RFC 1919, DOI 10.17487/RFC1919, March 1996, | |||
| <https://www.rfc-editor.org/info/rfc1919>. | <https://www.rfc-editor.org/info/rfc1919>. | |||
| [RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, "Hypertext | [RFC1945] Berners-Lee, T., Fielding, R.T., and H.F. Nielsen, | |||
| Transfer Protocol -- HTTP/1.0", RFC 1945, | "Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, | |||
| DOI 10.17487/RFC1945, May 1996, | DOI 10.17487/RFC1945, May 1996, | |||
| <https://www.rfc-editor.org/info/rfc1945>. | <https://www.rfc-editor.org/info/rfc1945>. | |||
| [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail Extensions) | [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail Extensions) | |||
| Part Three: Message Header Extensions for Non-ASCII Text", | Part Three: Message Header Extensions for Non-ASCII Text", | |||
| RFC 2047, DOI 10.17487/RFC2047, November 1996, | RFC 2047, DOI 10.17487/RFC2047, November 1996, | |||
| <https://www.rfc-editor.org/info/rfc2047>. | <https://www.rfc-editor.org/info/rfc2047>. | |||
| [RFC2068] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., and T. | [RFC2068] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., and T. | |||
| Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", | Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", | |||
| RFC 2068, DOI 10.17487/RFC2068, January 1997, | RFC 2068, DOI 10.17487/RFC2068, January 1997, | |||
| <https://www.rfc-editor.org/info/rfc2068>. | <https://www.rfc-editor.org/info/rfc2068>. | |||
| [RFC2145] Mogul, J., Fielding, R., Gettys, J., and H. Nielsen, "Use | [RFC2145] Mogul, J.C., Fielding, R.T., Gettys, J., and H.F. Nielsen, | |||
| and Interpretation of HTTP Version Numbers", RFC 2145, | "Use and Interpretation of HTTP Version Numbers", | |||
| DOI 10.17487/RFC2145, May 1997, | RFC 2145, DOI 10.17487/RFC2145, May 1997, | |||
| <https://www.rfc-editor.org/info/rfc2145>. | <https://www.rfc-editor.org/info/rfc2145>. | |||
| [RFC2295] Holtman, K. and A. Mutz, "Transparent Content Negotiation | [RFC2295] Holtman, K. and A.H. Mutz, "Transparent Content | |||
| in HTTP", RFC 2295, DOI 10.17487/RFC2295, March 1998, | Negotiation in HTTP", RFC 2295, DOI 10.17487/RFC2295, | |||
| <https://www.rfc-editor.org/info/rfc2295>. | March 1998, <https://www.rfc-editor.org/info/rfc2295>. | |||
| [RFC2324] Masinter, L., "Hyper Text Coffee Pot Control Protocol | [RFC2324] Masinter, L., "Hyper Text Coffee Pot Control Protocol | |||
| (HTCPCP/1.0)", RFC 2324, DOI 10.17487/RFC2324, April 1998, | (HTCPCP/1.0)", RFC 2324, DOI 10.17487/RFC2324, April 1, | |||
| <https://www.rfc-editor.org/info/rfc2324>. | 1998, <https://www.rfc-editor.org/info/rfc2324>. | |||
| [RFC2557] Palme, F., Hopmann, A., Shelness, N., and E. Stefferud, | [RFC2557] Palme, F., Hopmann, A., Shelness, N., and E. Stefferud, | |||
| "MIME Encapsulation of Aggregate Documents, such as HTML | "MIME Encapsulation of Aggregate Documents, such as HTML | |||
| (MHTML)", RFC 2557, DOI 10.17487/RFC2557, March 1999, | (MHTML)", RFC 2557, DOI 10.17487/RFC2557, March 1999, | |||
| <https://www.rfc-editor.org/info/rfc2557>. | <https://www.rfc-editor.org/info/rfc2557>. | |||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
| Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
| Transfer Protocol -- HTTP/1.1", RFC 2616, | Transfer Protocol -- HTTP/1.1", RFC 2616, | |||
| DOI 10.17487/RFC2616, June 1999, | DOI 10.17487/RFC2616, June 1999, | |||
| <https://www.rfc-editor.org/info/rfc2616>. | <https://www.rfc-editor.org/info/rfc2616>. | |||
| [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | [RFC2617] Franks, J., Hallam-Baker, P.M., Hostetler, J.L., Lawrence, | |||
| Leach, P., Luotonen, A., and L. Stewart, "HTTP | S.D., Leach, P.J., Luotonen, A., and L. Stewart, "HTTP | |||
| Authentication: Basic and Digest Access Authentication", | Authentication: Basic and Digest Access Authentication", | |||
| RFC 2617, DOI 10.17487/RFC2617, June 1999, | RFC 2617, DOI 10.17487/RFC2617, June 1999, | |||
| <https://www.rfc-editor.org/info/rfc2617>. | <https://www.rfc-editor.org/info/rfc2617>. | |||
| [RFC2774] Frystyk, H., Leach, P., and S. Lawrence, "An HTTP | [RFC2774] Frystyk, H., Leach, P., and S. Lawrence, "An HTTP | |||
| Extension Framework", RFC 2774, DOI 10.17487/RFC2774, | Extension Framework", RFC 2774, DOI 10.17487/RFC2774, | |||
| February 2000, <https://www.rfc-editor.org/info/rfc2774>. | February 2000, <https://www.rfc-editor.org/info/rfc2774>. | |||
| [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, | |||
| DOI 10.17487/RFC2818, May 2000, | DOI 10.17487/RFC2818, May 2000, | |||
| skipping to change at page 183, line 32 ¶ | skipping to change at page 185, line 28 ¶ | |||
| [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | [RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | |||
| Rose, "DNS Security Introduction and Requirements", | Rose, "DNS Security Introduction and Requirements", | |||
| RFC 4033, DOI 10.17487/RFC4033, March 2005, | RFC 4033, DOI 10.17487/RFC4033, March 2005, | |||
| <https://www.rfc-editor.org/info/rfc4033>. | <https://www.rfc-editor.org/info/rfc4033>. | |||
| [RFC4559] Jaganathan, K., Zhu, L., and J. Brezak, "SPNEGO-based | [RFC4559] Jaganathan, K., Zhu, L., and J. Brezak, "SPNEGO-based | |||
| Kerberos and NTLM HTTP Authentication in Microsoft | Kerberos and NTLM HTTP Authentication in Microsoft | |||
| Windows", RFC 4559, DOI 10.17487/RFC4559, June 2006, | Windows", RFC 4559, DOI 10.17487/RFC4559, June 2006, | |||
| <https://www.rfc-editor.org/info/rfc4559>. | <https://www.rfc-editor.org/info/rfc4559>. | |||
| [RFC4918] Dusseault, L., Ed., "HTTP Extensions for Web Distributed | [RFC4918] Dusseault, L.M., Ed., "HTTP Extensions for Web Distributed | |||
| Authoring and Versioning (WebDAV)", RFC 4918, | Authoring and Versioning (WebDAV)", RFC 4918, | |||
| DOI 10.17487/RFC4918, June 2007, | DOI 10.17487/RFC4918, June 2007, | |||
| <https://www.rfc-editor.org/info/rfc4918>. | <https://www.rfc-editor.org/info/rfc4918>. | |||
| [RFC5322] Resnick, P., "Internet Message Format", RFC 5322, | [RFC5322] Resnick, P., "Internet Message Format", RFC 5322, | |||
| DOI 10.17487/RFC5322, October 2008, | DOI 10.17487/RFC5322, October 2008, | |||
| <https://www.rfc-editor.org/info/rfc5322>. | <https://www.rfc-editor.org/info/rfc5322>. | |||
| [RFC5789] Dusseault, L. and J. Snell, "PATCH Method for HTTP", | [RFC5789] Dusseault, L. and J. Snell, "PATCH Method for HTTP", | |||
| RFC 5789, DOI 10.17487/RFC5789, March 2010, | RFC 5789, DOI 10.17487/RFC5789, March 2010, | |||
| skipping to change at page 184, line 24 ¶ | skipping to change at page 186, line 17 ¶ | |||
| <https://www.rfc-editor.org/info/rfc6265>. | <https://www.rfc-editor.org/info/rfc6265>. | |||
| [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | |||
| DOI 10.17487/RFC6454, December 2011, | DOI 10.17487/RFC6454, December 2011, | |||
| <https://www.rfc-editor.org/info/rfc6454>. | <https://www.rfc-editor.org/info/rfc6454>. | |||
| [RFC6585] Nottingham, M. and R. Fielding, "Additional HTTP Status | [RFC6585] Nottingham, M. and R. Fielding, "Additional HTTP Status | |||
| Codes", RFC 6585, DOI 10.17487/RFC6585, April 2012, | Codes", RFC 6585, DOI 10.17487/RFC6585, April 2012, | |||
| <https://www.rfc-editor.org/info/rfc6585>. | <https://www.rfc-editor.org/info/rfc6585>. | |||
| [RFC7230] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7230] Fielding, R., Ed. and J. F. Reschke, Ed., "Hypertext | |||
| Protocol (HTTP/1.1): Message Syntax and Routing", | Transfer Protocol (HTTP/1.1): Message Syntax and Routing", | |||
| RFC 7230, DOI 10.17487/RFC7230, June 2014, | RFC 7230, DOI 10.17487/RFC7230, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7230>. | <https://www.rfc-editor.org/info/rfc7230>. | |||
| [RFC7231] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7231] Fielding, R., Ed. and J. F. Reschke, Ed., "Hypertext | |||
| Protocol (HTTP/1.1): Semantics and Content", RFC 7231, | Transfer Protocol (HTTP/1.1): Semantics and Content", | |||
| DOI 10.17487/RFC7231, June 2014, | RFC 7231, DOI 10.17487/RFC7231, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7231>. | <https://www.rfc-editor.org/info/rfc7231>. | |||
| [RFC7232] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7232] Fielding, R., Ed. and J. F. Reschke, Ed., "Hypertext | |||
| Protocol (HTTP/1.1): Conditional Requests", RFC 7232, | Transfer Protocol (HTTP/1.1): Conditional Requests", | |||
| DOI 10.17487/RFC7232, June 2014, | RFC 7232, DOI 10.17487/RFC7232, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7232>. | <https://www.rfc-editor.org/info/rfc7232>. | |||
| [RFC7233] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., | [RFC7233] Fielding, R., Ed., Lafon, Y., Ed., and J. F. Reschke, Ed., | |||
| "Hypertext Transfer Protocol (HTTP): Range Requests", | "Hypertext Transfer Protocol (HTTP): Range Requests", | |||
| RFC 7233, DOI 10.17487/RFC7233, June 2014, | RFC 7233, DOI 10.17487/RFC7233, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7233>. | <https://www.rfc-editor.org/info/rfc7233>. | |||
| [RFC7235] Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer | [RFC7235] Fielding, R., Ed. and J. F. Reschke, Ed., "Hypertext | |||
| Protocol (HTTP/1.1): Authentication", RFC 7235, | Transfer Protocol (HTTP/1.1): Authentication", RFC 7235, | |||
| DOI 10.17487/RFC7235, June 2014, | DOI 10.17487/RFC7235, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7235>. | <https://www.rfc-editor.org/info/rfc7235>. | |||
| [RFC7538] Reschke, J., "The Hypertext Transfer Protocol Status Code | [RFC7538] Reschke, J. F., "The Hypertext Transfer Protocol Status | |||
| 308 (Permanent Redirect)", RFC 7538, DOI 10.17487/RFC7538, | Code 308 (Permanent Redirect)", RFC 7538, | |||
| April 2015, <https://www.rfc-editor.org/info/rfc7538>. | DOI 10.17487/RFC7538, April 2015, | |||
| <https://www.rfc-editor.org/info/rfc7538>. | ||||
| [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | |||
| Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | |||
| DOI 10.17487/RFC7540, May 2015, | DOI 10.17487/RFC7540, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7540>. | <https://www.rfc-editor.org/info/rfc7540>. | |||
| [RFC7578] Masinter, L., "Returning Values from Forms: multipart/ | [RFC7578] Masinter, L., "Returning Values from Forms: multipart/ | |||
| form-data", RFC 7578, DOI 10.17487/RFC7578, July 2015, | form-data", RFC 7578, DOI 10.17487/RFC7578, July 2015, | |||
| <https://www.rfc-editor.org/info/rfc7578>. | <https://www.rfc-editor.org/info/rfc7578>. | |||
| [RFC7615] Reschke, J., "HTTP Authentication-Info and Proxy- | [RFC7615] Reschke, J. F., "HTTP Authentication-Info and Proxy- | |||
| Authentication-Info Response Header Fields", RFC 7615, | Authentication-Info Response Header Fields", RFC 7615, | |||
| DOI 10.17487/RFC7615, September 2015, | DOI 10.17487/RFC7615, September 2015, | |||
| <https://www.rfc-editor.org/info/rfc7615>. | <https://www.rfc-editor.org/info/rfc7615>. | |||
| [RFC7616] Shekh-Yusef, R., Ed., Ahrens, D., and S. Bremer, "HTTP | [RFC7616] Shekh-Yusef, R., Ed., Ahrens, D., and S. Bremer, "HTTP | |||
| Digest Access Authentication", RFC 7616, | Digest Access Authentication", RFC 7616, | |||
| DOI 10.17487/RFC7616, September 2015, | DOI 10.17487/RFC7616, September 2015, | |||
| <https://www.rfc-editor.org/info/rfc7616>. | <https://www.rfc-editor.org/info/rfc7616>. | |||
| [RFC7617] Reschke, J., "The 'Basic' HTTP Authentication Scheme", | [RFC7617] Reschke, J. F., "The 'Basic' HTTP Authentication Scheme", | |||
| RFC 7617, DOI 10.17487/RFC7617, September 2015, | RFC 7617, DOI 10.17487/RFC7617, September 2015, | |||
| <https://www.rfc-editor.org/info/rfc7617>. | <https://www.rfc-editor.org/info/rfc7617>. | |||
| [RFC7694] Reschke, J., "Hypertext Transfer Protocol (HTTP) Client- | [RFC7694] Reschke, J. F., "Hypertext Transfer Protocol (HTTP) | |||
| Initiated Content-Encoding", RFC 7694, | Client-Initiated Content-Encoding", RFC 7694, | |||
| DOI 10.17487/RFC7694, November 2015, | DOI 10.17487/RFC7694, November 2015, | |||
| <https://www.rfc-editor.org/info/rfc7694>. | <https://www.rfc-editor.org/info/rfc7694>. | |||
| [RFC7838] Nottingham, M., McManus, P., and J. Reschke, "HTTP | [RFC7838] Nottingham, M., McManus, P., and J. Reschke, "HTTP | |||
| Alternative Services", RFC 7838, DOI 10.17487/RFC7838, | Alternative Services", RFC 7838, DOI 10.17487/RFC7838, | |||
| April 2016, <https://www.rfc-editor.org/info/rfc7838>. | April 2016, <https://www.rfc-editor.org/info/rfc7838>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| [RFC8187] Reschke, J., "Indicating Character Encoding and Language | [RFC8187] Reschke, J. F., "Indicating Character Encoding and | |||
| for HTTP Header Field Parameters", RFC 8187, | Language for HTTP Header Field Parameters", RFC 8187, | |||
| DOI 10.17487/RFC8187, September 2017, | DOI 10.17487/RFC8187, September 2017, | |||
| <https://www.rfc-editor.org/info/rfc8187>. | <https://www.rfc-editor.org/info/rfc8187>. | |||
| [RFC8246] McManus, P., "HTTP Immutable Responses", RFC 8246, | [RFC8246] McManus, P., "HTTP Immutable Responses", RFC 8246, | |||
| DOI 10.17487/RFC8246, September 2017, | DOI 10.17487/RFC8246, September 2017, | |||
| <https://www.rfc-editor.org/info/rfc8246>. | <https://www.rfc-editor.org/info/rfc8246>. | |||
| [RFC8288] Nottingham, M., "Web Linking", RFC 8288, | [RFC8288] Nottingham, M., "Web Linking", RFC 8288, | |||
| DOI 10.17487/RFC8288, October 2017, | DOI 10.17487/RFC8288, October 2017, | |||
| <https://www.rfc-editor.org/info/rfc8288>. | <https://www.rfc-editor.org/info/rfc8288>. | |||
| [RFC8336] Nottingham, M. and E. Nygren, "The ORIGIN HTTP/2 Frame", | [RFC8336] Nottingham, M. and E. Nygren, "The ORIGIN HTTP/2 Frame", | |||
| RFC 8336, DOI 10.17487/RFC8336, March 2018, | RFC 8336, DOI 10.17487/RFC8336, March 2018, | |||
| <https://www.rfc-editor.org/info/rfc8336>. | <https://www.rfc-editor.org/info/rfc8336>. | |||
| [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
| <https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
| [Sniffing] | [Sniffing] WHATWG, "MIME Sniffing", | |||
| WHATWG, "MIME Sniffing", | ||||
| <https://mimesniff.spec.whatwg.org>. | <https://mimesniff.spec.whatwg.org>. | |||
| Appendix A. Collected ABNF | Appendix A. Collected ABNF | |||
| In the collected ABNF below, list rules are expanded as per | In the collected ABNF below, list rules are expanded as per | |||
| Section 5.5.1. | Section 5.5.1. | |||
| Accept = [ ( media-range [ accept-params ] ) *( OWS "," OWS ( | Accept = [ ( media-range [ accept-params ] ) *( OWS "," OWS ( | |||
| media-range [ accept-params ] ) ) ] | media-range [ accept-params ] ) ) ] | |||
| Accept-Charset = ( ( charset / "*" ) [ weight ] ) *( OWS "," OWS ( ( | Accept-Charset = ( ( charset / "*" ) [ weight ] ) *( OWS "," OWS ( ( | |||
| skipping to change at page 191, line 45 ¶ | skipping to change at page 193, line 6 ¶ | |||
| None yet. | None yet. | |||
| B.2. Changes from RFC 7230 | B.2. Changes from RFC 7230 | |||
| The sections introducing HTTP's design goals, history, architecture, | The sections introducing HTTP's design goals, history, architecture, | |||
| conformance criteria, protocol versioning, URIs, message routing, and | conformance criteria, protocol versioning, URIs, message routing, and | |||
| header fields have been moved here (without substantive change). | header fields have been moved here (without substantive change). | |||
| "Field value" now refers to the value after multiple instances are | "Field value" now refers to the value after multiple instances are | |||
| combined with commas -- by far the most common use. To refer to a | combined with commas - by far the most common use. To refer to a | |||
| single header line's value, use "field line value". (Section 5) | single header line's value, use "field line value". (Section 5) | |||
| Trailer field semantics now transcend the specifics of chunked | Trailer field semantics now transcend the specifics of chunked | |||
| encoding. Use of trailer fields has been further limited to only | encoding. Use of trailer fields has been further limited to only | |||
| allow generation as a trailer field when the sender knows the field | allow generation as a trailer field when the sender knows the field | |||
| defines that usage and to only allow merging into the header section | defines that usage and to only allow merging into the header section | |||
| if the recipient knows the corresponding field definition permits and | if the recipient knows the corresponding field definition permits and | |||
| defines how to merge. In all other cases, implementations are | defines how to merge. In all other cases, implementations are | |||
| encouraged to either store the trailer fields separately or discard | encouraged to either store the trailer fields separately or discard | |||
| them instead of merging. (Section 5.6.2) | them instead of merging. (Section 5.6.2) | |||
| skipping to change at page 203, line 39 ¶ | skipping to change at page 204, line 51 ¶ | |||
| o Add Section 4 about Extending and Versioning HTTP | o Add Section 4 about Extending and Versioning HTTP | |||
| (<https://github.com/httpwg/http-core/issues/384>) | (<https://github.com/httpwg/http-core/issues/384>) | |||
| o In Section 10.1, include status 308 in list of heuristically | o In Section 10.1, include status 308 in list of heuristically | |||
| cacheable status codes (<https://github.com/httpwg/http-core/ | cacheable status codes (<https://github.com/httpwg/http-core/ | |||
| issues/385>) | issues/385>) | |||
| o In Section 7.2.2, make it clearer that "identity" is not to be | o In Section 7.2.2, make it clearer that "identity" is not to be | |||
| included (<https://github.com/httpwg/http-core/issues/388>) | included (<https://github.com/httpwg/http-core/issues/388>) | |||
| Index | D.11. Since draft-ietf-httpbis-semantics-09 | |||
| o Switch to xml2rfc v3 mode for draft generation | ||||
| 1 | (<https://github.com/httpwg/http-core/issues/394>) | |||
| 100 Continue (status code) 127 | ||||
| 100-continue (expect value) 93 | ||||
| 101 Switching Protocols (status code) 127 | ||||
| 1xx Informational (status code class) 126 | ||||
| 2 | ||||
| 200 OK (status code) 127 | ||||
| 201 Created (status code) 128 | ||||
| 202 Accepted (status code) 128 | ||||
| 203 Non-Authoritative Information (status code) 129 | ||||
| 204 No Content (status code) 129 | ||||
| 205 Reset Content (status code) 130 | ||||
| 206 Partial Content (status code) 130 | ||||
| 2xx Successful (status code class) 127 | ||||
| 3 | ||||
| 300 Multiple Choices (status code) 135 | ||||
| 301 Moved Permanently (status code) 136 | ||||
| 302 Found (status code) 136 | ||||
| 303 See Other (status code) 137 | ||||
| 304 Not Modified (status code) 137 | ||||
| 305 Use Proxy (status code) 138 | ||||
| 306 (Unused) (status code) 138 | ||||
| 307 Temporary Redirect (status code) 138 | ||||
| 308 Permanent Redirect (status code) 139 | ||||
| 3xx Redirection (status code class) 133 | ||||
| 4 | ||||
| 400 Bad Request (status code) 139 | ||||
| 401 Unauthorized (status code) 139 | ||||
| 402 Payment Required (status code) 140 | ||||
| 403 Forbidden (status code) 140 | ||||
| 404 Not Found (status code) 140 | ||||
| 405 Method Not Allowed (status code) 141 | ||||
| 406 Not Acceptable (status code) 141 | ||||
| 407 Proxy Authentication Required (status code) 141 | ||||
| 408 Request Timeout (status code) 141 | ||||
| 409 Conflict (status code) 142 | ||||
| 410 Gone (status code) 142 | ||||
| 411 Length Required (status code) 142 | ||||
| 412 Precondition Failed (status code) 143 | ||||
| 413 Payload Too Large (status code) 143 | ||||
| 414 URI Too Long (status code) 143 | ||||
| 415 Unsupported Media Type (status code) 143 | ||||
| 416 Range Not Satisfiable (status code) 144 | ||||
| 417 Expectation Failed (status code) 144 | ||||
| 418 (Unused) (status code) 145 | ||||
| 422 Unprocessable Payload (status code) 145 | ||||
| 426 Upgrade Required (status code) 145 | ||||
| 4xx Client Error (status code class) 139 | ||||
| 5 | ||||
| 500 Internal Server Error (status code) 146 | ||||
| 501 Not Implemented (status code) 146 | ||||
| 502 Bad Gateway (status code) 146 | ||||
| 503 Service Unavailable (status code) 146 | ||||
| 504 Gateway Timeout (status code) 146 | ||||
| 505 HTTP Version Not Supported (status code) 147 | ||||
| 5xx Server Error (status code class) 145 | ||||
| A | ||||
| Accept header field 109 | ||||
| Accept-Charset header field 111 | ||||
| Accept-Encoding header field 112 | ||||
| Accept-Language header field 114 | ||||
| Accept-Ranges header field 165 | ||||
| Allow header field 165 | ||||
| Authentication-Info header field 163 | ||||
| Authorization header field 118 | ||||
| accelerator 14 | ||||
| authoritative response 167 | ||||
| B | ||||
| browser 11 | ||||
| C | ||||
| CONNECT method 88 | ||||
| Canonical Root URI 117 | ||||
| Content-Encoding header field 63 | ||||
| Content-Language header field 64 | ||||
| Content-Length header field 64 | ||||
| Content-Location header field 66 | ||||
| Content-MD5 header field 177 | ||||
| Content-Range header field 70 | ||||
| Content-Type header field 62 | ||||
| cache 15 | ||||
| cacheable 16 | ||||
| captive portal 15 | ||||
| client 11 | ||||
| complete 12 | ||||
| compress (Coding Format) 56 | ||||
| compress (content coding) 55 | ||||
| conditional request 96 | ||||
| connection 11 | ||||
| content coding 55 | ||||
| content negotiation 9 | ||||
| D | ||||
| DELETE method 87 | ||||
| Date header field 149 | ||||
| Delimiters 31 | ||||
| deflate (Coding Format) 56 | ||||
| deflate (content coding) 55 | ||||
| downstream 14 | ||||
| E | ||||
| ETag field 157 | ||||
| Expect header field 93 | ||||
| effective request URI 47 | ||||
| F | ||||
| Fields | ||||
| Accept 109 | ||||
| Accept-Charset 111 | ||||
| Accept-Encoding 112 | ||||
| Accept-Language 114 | ||||
| Accept-Ranges 165 | ||||
| Allow 165 | ||||
| Authentication-Info 163 | ||||
| Authorization 118 | ||||
| Content-Encoding 63 | ||||
| Content-Language 64 | ||||
| Content-Length 64 | ||||
| Content-Location 66 | ||||
| Content-MD5 177 | ||||
| Content-Range 70 | ||||
| Content-Type 62 | ||||
| Date 149 | ||||
| ETag 157 | ||||
| Expect 93 | ||||
| From 121 | ||||
| Host 48 | ||||
| If-Match 100 | ||||
| If-Modified-Since 103 | ||||
| If-None-Match 101 | ||||
| If-Range 105 | ||||
| If-Unmodified-Since 104 | ||||
| Last-Modified 155 | ||||
| Location 150 | ||||
| Max-Forwards 96 | ||||
| Proxy-Authenticate 163 | ||||
| Proxy-Authentication-Info 164 | ||||
| Proxy-Authorization 118 | ||||
| Range 106 | ||||
| Referer 122 | ||||
| Retry-After 151 | ||||
| Server 166 | ||||
| Trailer 37 | ||||
| User-Agent 123 | ||||
| Vary 152 | ||||
| Via 49 | ||||
| WWW-Authenticate 162 | ||||
| Fragment Identifiers 20 | ||||
| From header field 121 | ||||
| field 25 | ||||
| field line 26 | ||||
| field line value 26 | ||||
| field name 26 | ||||
| field value 26 | ||||
| G | ||||
| GET method 82 | ||||
| Grammar | ||||
| absolute-path 17 | ||||
| absolute-URI 17 | ||||
| Accept 109 | ||||
| Accept-Charset 111 | ||||
| Accept-Encoding 112 | ||||
| accept-ext 109 | ||||
| Accept-Language 114 | ||||
| accept-params 109 | ||||
| Accept-Ranges 165 | ||||
| acceptable-ranges 165 | ||||
| Allow 165 | ||||
| ALPHA 10 | ||||
| asctime-date 34 | ||||
| auth-param 115 | ||||
| auth-scheme 115 | ||||
| Authentication-Info 163 | ||||
| authority 17 | ||||
| Authorization 118 | ||||
| BWS 11 | ||||
| challenge 116 | ||||
| charset 53 | ||||
| codings 112 | ||||
| comment 32 | ||||
| complete-length 70 | ||||
| content-coding 55 | ||||
| Content-Encoding 63 | ||||
| Content-Language 64 | ||||
| Content-Length 65 | ||||
| Content-Location 66 | ||||
| Content-Range 70 | ||||
| Content-Type 62 | ||||
| CR 10 | ||||
| credentials 116 | ||||
| CRLF 10 | ||||
| ctext 32 | ||||
| CTL 10 | ||||
| Date 149 | ||||
| date1 34 | ||||
| day 34 | ||||
| day-name 34 | ||||
| day-name-l 34 | ||||
| delay-seconds 151 | ||||
| DIGIT 10 | ||||
| DQUOTE 10 | ||||
| entity-tag 158 | ||||
| ETag 158 | ||||
| etagc 158 | ||||
| Expect 93 | ||||
| field-content 30 | ||||
| field-name 28, 38 | ||||
| field-value 30 | ||||
| field-vchar 30 | ||||
| first-pos 58, 70 | ||||
| From 121 | ||||
| GMT 34 | ||||
| HEXDIG 10 | ||||
| Host 48 | ||||
| hour 34 | ||||
| HTAB 10 | ||||
| HTTP-date 33 | ||||
| http-URI 18 | ||||
| https-URI 19 | ||||
| If-Match 100 | ||||
| If-Modified-Since 103 | ||||
| If-None-Match 101 | ||||
| If-Range 106 | ||||
| If-Unmodified-Since 104 | ||||
| IMF-fixdate 34 | ||||
| incl-range 70 | ||||
| int-range 58 | ||||
| language-range 114 | ||||
| language-tag 57 | ||||
| Last-Modified 155 | ||||
| last-pos 58, 70 | ||||
| LF 10 | ||||
| Location 150 | ||||
| Max-Forwards 96 | ||||
| media-range 109 | ||||
| media-type 53 | ||||
| method 78 | ||||
| minute 34 | ||||
| month 34 | ||||
| obs-date 34 | ||||
| obs-text 32 | ||||
| OCTET 10 | ||||
| opaque-tag 158 | ||||
| other-range 59 | ||||
| OWS 11 | ||||
| parameter 33 | ||||
| parameter-name 33 | ||||
| parameter-value 33 | ||||
| partial-URI 17 | ||||
| port 17 | ||||
| product 123 | ||||
| product-version 123 | ||||
| protocol-name 49 | ||||
| protocol-version 49 | ||||
| Proxy-Authenticate 163 | ||||
| Proxy-Authentication-Info 164 | ||||
| Proxy-Authorization 118 | ||||
| pseudonym 49 | ||||
| qdtext 32 | ||||
| query 17 | ||||
| quoted-pair 32 | ||||
| quoted-string 32 | ||||
| qvalue 77 | ||||
| Range 106 | ||||
| range-resp 70 | ||||
| range-set 58 | ||||
| range-spec 58 | ||||
| range-unit 57 | ||||
| ranges-specifier 58 | ||||
| received-by 49 | ||||
| received-protocol 49 | ||||
| Referer 122 | ||||
| Retry-After 151 | ||||
| rfc850-date 34 | ||||
| RWS 11 | ||||
| second 34 | ||||
| segment 17 | ||||
| Server 166 | ||||
| SP 10 | ||||
| subtype 53 | ||||
| suffix-length 59 | ||||
| suffix-range 59 | ||||
| tchar 32 | ||||
| time-of-day 34 | ||||
| token 32 | ||||
| token68 115 | ||||
| Trailer 38 | ||||
| type 53 | ||||
| unsatisfied-range 70 | ||||
| uri-host 17 | ||||
| URI-reference 17 | ||||
| User-Agent 123 | ||||
| Vary 152 | ||||
| VCHAR 10 | ||||
| Via 49 | ||||
| weak 158 | ||||
| weight 77 | ||||
| WWW-Authenticate 162 | ||||
| year 34 | ||||
| gateway 14 | ||||
| gzip (Coding Format) 56 | ||||
| gzip (content coding) 55 | ||||
| H | ||||
| HEAD method 83 | ||||
| Header Fields | ||||
| Accept 109 | ||||
| Accept-Charset 111 | ||||
| Accept-Encoding 112 | ||||
| Accept-Language 114 | ||||
| Accept-Ranges 165 | ||||
| Allow 165 | ||||
| Authentication-Info 163 | ||||
| Authorization 118 | ||||
| Content-Encoding 63 | ||||
| Content-Language 64 | ||||
| Content-Length 64 | ||||
| Content-Location 66 | ||||
| Content-MD5 177 | ||||
| Content-Range 70 | ||||
| Content-Type 62 | ||||
| Date 149 | ||||
| ETag 157 | ||||
| Expect 93 | ||||
| From 121 | ||||
| Host 48 | ||||
| If-Match 100 | ||||
| If-Modified-Since 103 | ||||
| If-None-Match 101 | ||||
| If-Range 105 | ||||
| If-Unmodified-Since 104 | ||||
| Last-Modified 155 | ||||
| Location 150 | ||||
| Max-Forwards 96 | ||||
| Proxy-Authenticate 163 | ||||
| Proxy-Authentication-Info 164 | ||||
| Proxy-Authorization 118 | ||||
| Range 106 | ||||
| Referer 122 | ||||
| Retry-After 151 | ||||
| Server 166 | ||||
| Trailer 37 | ||||
| User-Agent 123 | ||||
| Vary 152 | ||||
| Via 49 | ||||
| WWW-Authenticate 162 | ||||
| Host header field 48 | ||||
| header section 25 | ||||
| http URI scheme 18 | ||||
| https URI scheme 18 | ||||
| I | ||||
| If-Match header field 100 | ||||
| If-Modified-Since header field 103 | ||||
| If-None-Match header field 101 | ||||
| If-Range header field 105 | ||||
| If-Unmodified-Since header field 104 | ||||
| idempotent 81 | ||||
| inbound 14 | ||||
| incomplete 12 | ||||
| interception proxy 15 | ||||
| intermediary 13 | ||||
| L | ||||
| Last-Modified header field 155 | ||||
| Location header field 150 | ||||
| M | ||||
| Max-Forwards header field 96 | ||||
| Media Type | ||||
| multipart/byteranges 72 | ||||
| multipart/x-byteranges 72 | ||||
| message 12 | ||||
| metadata 153 | ||||
| multipart/byteranges Media Type 72 | ||||
| multipart/x-byteranges Media Type 72 | ||||
| N | ||||
| non-transforming proxy 51 | ||||
| O | ||||
| OPTIONS method 90 | ||||
| origin 42 | ||||
| origin server 11 | ||||
| outbound 14 | ||||
| P | ||||
| POST method 84 | ||||
| PUT method 85 | ||||
| Protection Space 117 | ||||
| Proxy-Authenticate header field 163 | ||||
| Proxy-Authentication-Info header field 164 | ||||
| Proxy-Authorization header field 118 | ||||
| payload 68 | ||||
| phishing 167 | ||||
| proxy 14 | ||||
| R | ||||
| Range header field 106 | ||||
| Realm 117 | ||||
| Referer header field 122 | ||||
| Retry-After header field 151 | ||||
| recipient 11 | ||||
| representation 52 | ||||
| request 12 | ||||
| resource 16 | ||||
| response 12 | ||||
| reverse proxy 14 | ||||
| S | ||||
| Server header field 166 | ||||
| Status Code 124 | ||||
| Status Codes | ||||
| Final 125 | ||||
| Informational 125 | ||||
| Interim 125 | ||||
| Status Codes Classes | ||||
| 1xx Informational 126 | ||||
| 2xx Successful 127 | ||||
| 3xx Redirection 133 | ||||
| 4xx Client Error 139 | ||||
| 5xx Server Error 145 | ||||
| safe 80 | ||||
| secured 18 | ||||
| selected representation 52, 96, 153 | ||||
| sender 11 | ||||
| server 11 | ||||
| spider 11 | ||||
| T | ||||
| TRACE method 91 | ||||
| Trailer Fields | ||||
| ETag 157 | ||||
| Trailer header field 37 | ||||
| target URI 41 | ||||
| target resource 41 | ||||
| trailer fields 36 | ||||
| trailer section 25 | ||||
| trailers 36 | ||||
| transforming proxy 51 | ||||
| transparent proxy 15 | ||||
| tunnel 15 | ||||
| U | ||||
| URI | ||||
| origin 42 | ||||
| URI scheme | ||||
| http 18 | ||||
| https 18 | ||||
| User-Agent header field 123 | ||||
| upstream 14 | ||||
| user agent 11 | ||||
| V | ||||
| Vary header field 152 | ||||
| Via header field 49 | ||||
| validator 153 | ||||
| strong 154 | ||||
| weak 154 | ||||
| W | ||||
| WWW-Authenticate header field 162 | ||||
| X | ||||
| x-compress (content coding) 55 | ||||
| x-gzip (content coding) 55 | ||||
| Acknowledgments | Acknowledgments | |||
| This edition of the HTTP specification builds on the many | This edition of the HTTP specification builds on the many | |||
| contributions that went into RFC 1945, RFC 2068, RFC 2145, RFC 2616, | contributions that went into RFC 1945, RFC 2068, RFC 2145, RFC 2616, | |||
| and RFC 2818, including substantial contributions made by the | and RFC 2818, including substantial contributions made by the | |||
| previous authors, editors, and Working Group Chairs: Tim Berners-Lee, | previous authors, editors, and Working Group Chairs: Tim Berners-Lee, | |||
| Ari Luotonen, Roy T. Fielding, Henrik Frystyk Nielsen, Jim Gettys, | Ari Luotonen, Roy T. Fielding, Henrik Frystyk Nielsen, Jim Gettys, | |||
| Jeffrey C. Mogul, Larry Masinter, Paul J. Leach, Eric Rescorla, and | Jeffrey C. Mogul, Larry Masinter, Paul J. Leach, Eric Rescorla, and | |||
| Yves Lafon. | Yves Lafon. | |||
| skipping to change at page 214, line 5 ¶ | skipping to change at page 205, line 27 ¶ | |||
| See Section 10 of [RFC7230] for further acknowledgements from prior | See Section 10 of [RFC7230] for further acknowledgements from prior | |||
| revisions. | revisions. | |||
| In addition, this document has reincorporated the HTTP Authentication | In addition, this document has reincorporated the HTTP Authentication | |||
| Framework, previously defined in RFC 7235 and RFC 2617. We thank | Framework, previously defined in RFC 7235 and RFC 2617. We thank | |||
| John Franks, Phillip M. Hallam-Baker, Jeffery L. Hostetler, Scott | John Franks, Phillip M. Hallam-Baker, Jeffery L. Hostetler, Scott | |||
| D. Lawrence, Paul J. Leach, Ari Luotonen, and Lawrence C. Stewart | D. Lawrence, Paul J. Leach, Ari Luotonen, and Lawrence C. Stewart | |||
| for their work on that specification. See Section 6 of [RFC2617] for | for their work on that specification. See Section 6 of [RFC2617] for | |||
| further acknowledgements. | further acknowledgements. | |||
| [[newacks: New acks to be added here.]] | // New acks to be added here. | |||
| Authors' Addresses | Authors' Addresses | |||
| Roy T. Fielding (editor) | Roy T. Fielding (editor) | |||
| Adobe | Adobe | |||
| 345 Park Ave | 345 Park Ave | |||
| San Jose, CA 95110 | San Jose, CA 95110 | |||
| United States of America | United States of America | |||
| EMail: fielding@gbiv.com | Email: fielding@gbiv.com | |||
| URI: https://roy.gbiv.com/ | URI: https://roy.gbiv.com/ | |||
| Mark Nottingham (editor) | Mark Nottingham (editor) | |||
| Fastly | Fastly | |||
| EMail: mnot@mnot.net | Email: mnot@mnot.net | |||
| URI: https://www.mnot.net/ | URI: https://www.mnot.net/ | |||
| Julian F. Reschke (editor) | Julian F. Reschke (editor) | |||
| greenbytes GmbH | greenbytes GmbH | |||
| Hafenweg 16 | Hafenweg 16 | |||
| Muenster 48155 | 48155 Münster | |||
| Germany | Germany | |||
| EMail: julian.reschke@greenbytes.de | Email: julian.reschke@greenbytes.de | |||
| URI: https://greenbytes.de/tech/webdav/ | URI: https://greenbytes.de/tech/webdav/ | |||
| End of changes. 187 change blocks. | ||||
| 1231 lines changed or deleted | 782 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||