| draft-ietf-httpbis-semantics-01.txt | draft-ietf-httpbis-semantics-02.txt | |||
|---|---|---|---|---|
| HTTP Working Group R. Fielding, Ed. | HTTP Working Group R. Fielding, Ed. | |||
| Internet-Draft Adobe | Internet-Draft Adobe | |||
| Obsoletes: 7230,7231,7232,7233,7235 (if M. Nottingham, Ed. | Obsoletes: 7230,7231,7232,7233,7235 (if M. Nottingham, Ed. | |||
| approved) Fastly | approved) Fastly | |||
| Intended status: Standards Track J. Reschke, Ed. | Intended status: Standards Track J. Reschke, Ed. | |||
| Expires: December 2, 2018 greenbytes | Expires: January 3, 2019 greenbytes | |||
| May 31, 2018 | July 2, 2018 | |||
| HTTP Semantics | HTTP Semantics | |||
| draft-ietf-httpbis-semantics-01 | draft-ietf-httpbis-semantics-02 | |||
| 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 G.2. | The changes in this draft are summarized in Appendix G.3. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at 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 December 2, 2018. | This Internet-Draft will expire on January 3, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 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/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 4, line 23 ¶ | skipping to change at page 4, line 23 ¶ | |||
| 7.3.4. PUT . . . . . . . . . . . . . . . . . . . . . . . . . 65 | 7.3.4. PUT . . . . . . . . . . . . . . . . . . . . . . . . . 65 | |||
| 7.3.5. DELETE . . . . . . . . . . . . . . . . . . . . . . . 68 | 7.3.5. DELETE . . . . . . . . . . . . . . . . . . . . . . . 68 | |||
| 7.3.6. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 69 | 7.3.6. CONNECT . . . . . . . . . . . . . . . . . . . . . . . 69 | |||
| 7.3.7. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . 70 | 7.3.7. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . 70 | |||
| 7.3.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . 71 | 7.3.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . 71 | |||
| 7.4. Method Extensibility . . . . . . . . . . . . . . . . . . 72 | 7.4. Method Extensibility . . . . . . . . . . . . . . . . . . 72 | |||
| 7.4.1. Method Registry . . . . . . . . . . . . . . . . . . . 72 | 7.4.1. Method Registry . . . . . . . . . . . . . . . . . . . 72 | |||
| 7.4.2. Considerations for New Methods . . . . . . . . . . . 72 | 7.4.2. Considerations for New Methods . . . . . . . . . . . 72 | |||
| 8. Request Header Fields . . . . . . . . . . . . . . . . . . . . 73 | 8. Request Header Fields . . . . . . . . . . . . . . . . . . . . 73 | |||
| 8.1. Controls . . . . . . . . . . . . . . . . . . . . . . . . 73 | 8.1. Controls . . . . . . . . . . . . . . . . . . . . . . . . 73 | |||
| 8.1.1. Expect . . . . . . . . . . . . . . . . . . . . . . . 73 | 8.1.1. Expect . . . . . . . . . . . . . . . . . . . . . . . 74 | |||
| 8.1.2. Max-Forwards . . . . . . . . . . . . . . . . . . . . 76 | 8.1.2. Max-Forwards . . . . . . . . . . . . . . . . . . . . 76 | |||
| 8.2. Preconditions . . . . . . . . . . . . . . . . . . . . . . 76 | 8.2. Preconditions . . . . . . . . . . . . . . . . . . . . . . 76 | |||
| 8.2.1. Evaluation . . . . . . . . . . . . . . . . . . . . . 77 | 8.2.1. Evaluation . . . . . . . . . . . . . . . . . . . . . 77 | |||
| 8.2.2. Precedence . . . . . . . . . . . . . . . . . . . . . 78 | 8.2.2. Precedence . . . . . . . . . . . . . . . . . . . . . 78 | |||
| 8.2.3. If-Match . . . . . . . . . . . . . . . . . . . . . . 80 | 8.2.3. If-Match . . . . . . . . . . . . . . . . . . . . . . 80 | |||
| 8.2.4. If-None-Match . . . . . . . . . . . . . . . . . . . . 81 | 8.2.4. If-None-Match . . . . . . . . . . . . . . . . . . . . 81 | |||
| 8.2.5. If-Modified-Since . . . . . . . . . . . . . . . . . . 82 | 8.2.5. If-Modified-Since . . . . . . . . . . . . . . . . . . 82 | |||
| 8.2.6. If-Unmodified-Since . . . . . . . . . . . . . . . . . 83 | 8.2.6. If-Unmodified-Since . . . . . . . . . . . . . . . . . 83 | |||
| 8.2.7. If-Range . . . . . . . . . . . . . . . . . . . . . . 84 | 8.2.7. If-Range . . . . . . . . . . . . . . . . . . . . . . 85 | |||
| 8.3. Range . . . . . . . . . . . . . . . . . . . . . . . . . . 86 | 8.3. Range . . . . . . . . . . . . . . . . . . . . . . . . . . 86 | |||
| 8.4. Content Negotiation . . . . . . . . . . . . . . . . . . . 87 | 8.4. Content Negotiation . . . . . . . . . . . . . . . . . . . 87 | |||
| 8.4.1. Quality Values . . . . . . . . . . . . . . . . . . . 88 | 8.4.1. Quality Values . . . . . . . . . . . . . . . . . . . 88 | |||
| 8.4.2. Accept . . . . . . . . . . . . . . . . . . . . . . . 88 | 8.4.2. Accept . . . . . . . . . . . . . . . . . . . . . . . 88 | |||
| 8.4.3. Accept-Charset . . . . . . . . . . . . . . . . . . . 90 | 8.4.3. Accept-Charset . . . . . . . . . . . . . . . . . . . 90 | |||
| 8.4.4. Accept-Encoding . . . . . . . . . . . . . . . . . . . 91 | 8.4.4. Accept-Encoding . . . . . . . . . . . . . . . . . . . 91 | |||
| 8.4.5. Accept-Language . . . . . . . . . . . . . . . . . . . 93 | 8.4.5. Accept-Language . . . . . . . . . . . . . . . . . . . 93 | |||
| 8.5. Authentication Credentials . . . . . . . . . . . . . . . 94 | 8.5. Authentication Credentials . . . . . . . . . . . . . . . 94 | |||
| 8.5.1. Challenge and Response . . . . . . . . . . . . . . . 94 | 8.5.1. Challenge and Response . . . . . . . . . . . . . . . 94 | |||
| 8.5.2. Protection Space (Realm) . . . . . . . . . . . . . . 96 | 8.5.2. Protection Space (Realm) . . . . . . . . . . . . . . 96 | |||
| skipping to change at page 6, line 44 ¶ | skipping to change at page 6, line 44 ¶ | |||
| 12.9. Disclosure of Fragment after Redirects . . . . . . . . . 152 | 12.9. Disclosure of Fragment after Redirects . . . . . . . . . 152 | |||
| 12.10. Disclosure of Product Information . . . . . . . . . . . 153 | 12.10. Disclosure of Product Information . . . . . . . . . . . 153 | |||
| 12.11. Browser Fingerprinting . . . . . . . . . . . . . . . . . 153 | 12.11. Browser Fingerprinting . . . . . . . . . . . . . . . . . 153 | |||
| 12.12. Validator Retention . . . . . . . . . . . . . . . . . . 154 | 12.12. Validator Retention . . . . . . . . . . . . . . . . . . 154 | |||
| 12.13. Denial-of-Service Attacks Using Range . . . . . . . . . 154 | 12.13. Denial-of-Service Attacks Using Range . . . . . . . . . 154 | |||
| 12.14. Authentication Considerations . . . . . . . . . . . . . 155 | 12.14. Authentication Considerations . . . . . . . . . . . . . 155 | |||
| 12.14.1. Confidentiality of Credentials . . . . . . . . . . 155 | 12.14.1. Confidentiality of Credentials . . . . . . . . . . 155 | |||
| 12.14.2. Credentials and Idle Clients . . . . . . . . . . . 155 | 12.14.2. Credentials and Idle Clients . . . . . . . . . . . 155 | |||
| 12.14.3. Protection Spaces . . . . . . . . . . . . . . . . . 156 | 12.14.3. Protection Spaces . . . . . . . . . . . . . . . . . 156 | |||
| 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 156 | 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 156 | |||
| 13.1. URI Scheme Registration . . . . . . . . . . . . . . . . 157 | 13.1. URI Scheme Registration . . . . . . . . . . . . . . . . 156 | |||
| 13.2. Method Registration . . . . . . . . . . . . . . . . . . 157 | 13.2. Method Registration . . . . . . . . . . . . . . . . . . 157 | |||
| 13.3. Status Code Registration . . . . . . . . . . . . . . . . 157 | 13.3. Status Code Registration . . . . . . . . . . . . . . . . 157 | |||
| 13.4. Header Field Registration . . . . . . . . . . . . . . . 157 | 13.4. Header Field Registration . . . . . . . . . . . . . . . 157 | |||
| 13.5. Authentication Scheme Registration . . . . . . . . . . . 157 | 13.5. Authentication Scheme Registration . . . . . . . . . . . 157 | |||
| 13.6. Content Coding Registration . . . . . . . . . . . . . . 157 | 13.6. Content Coding Registration . . . . . . . . . . . . . . 157 | |||
| 13.7. Range Unit Registration . . . . . . . . . . . . . . . . 157 | 13.7. Range Unit Registration . . . . . . . . . . . . . . . . 157 | |||
| 13.8. Media Type Registration . . . . . . . . . . . . . . . . 158 | 13.8. Media Type Registration . . . . . . . . . . . . . . . . 157 | |||
| 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 158 | 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 158 | |||
| 14.1. Normative References . . . . . . . . . . . . . . . . . . 158 | 14.1. Normative References . . . . . . . . . . . . . . . . . . 158 | |||
| 14.2. Informative References . . . . . . . . . . . . . . . . . 159 | 14.2. Informative References . . . . . . . . . . . . . . . . . 159 | |||
| Appendix A. Collected ABNF . . . . . . . . . . . . . . . . . . . 165 | Appendix A. Collected ABNF . . . . . . . . . . . . . . . . . . . 165 | |||
| Appendix B. Changes from RFC 7230 . . . . . . . . . . . . . . . 169 | Appendix B. Changes from RFC 7230 . . . . . . . . . . . . . . . 169 | |||
| Appendix C. Changes from RFC 7231 . . . . . . . . . . . . . . . 170 | Appendix C. Changes from RFC 7231 . . . . . . . . . . . . . . . 170 | |||
| Appendix D. Changes from RFC 7232 . . . . . . . . . . . . . . . 170 | Appendix D. Changes from RFC 7232 . . . . . . . . . . . . . . . 170 | |||
| Appendix E. Changes from RFC 7233 . . . . . . . . . . . . . . . 170 | Appendix E. Changes from RFC 7233 . . . . . . . . . . . . . . . 170 | |||
| Appendix F. Changes from RFC 7235 . . . . . . . . . . . . . . . 170 | Appendix F. Changes from RFC 7235 . . . . . . . . . . . . . . . 170 | |||
| Appendix G. Change Log . . . . . . . . . . . . . . . . . . . . . 170 | Appendix G. Change Log . . . . . . . . . . . . . . . . . . . . . 170 | |||
| G.1. Between RFC723x and draft 00 . . . . . . . . . . . . . . 170 | G.1. Between RFC723x and draft 00 . . . . . . . . . . . . . . 170 | |||
| G.2. Since draft-ietf-httpbis-semantics-00 . . . . . . . . . . 170 | G.2. Since draft-ietf-httpbis-semantics-00 . . . . . . . . . . 170 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 | G.3. Since draft-ietf-httpbis-semantics-01 . . . . . . . . . . 171 | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 179 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 179 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 180 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 180 | ||||
| 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 8, line 42 ¶ | skipping to change at page 8, line 42 ¶ | |||
| codes to indicate a machine-readable response (Section 9), and the | codes to indicate a machine-readable response (Section 9), and the | |||
| meaning of other control data and resource metadata that might be | meaning of other control data and resource metadata that might be | |||
| given in response header fields (Section 10). | given in response header fields (Section 10). | |||
| This document also defines representation metadata that describe how | This document also defines representation metadata that describe how | |||
| a payload is intended to be interpreted by a recipient, the request | a payload is intended to be interpreted by a recipient, the request | |||
| header fields that might influence content selection, and the various | header fields that might influence content selection, and the various | |||
| selection algorithms that are collectively referred to as "content | selection algorithms that are collectively referred to as "content | |||
| negotiation" (Section 6.4). | negotiation" (Section 6.4). | |||
| This document defines HTTP/1.1 range requests, partial responses, and | This document defines HTTP range requests, partial responses, and the | |||
| the multipart/byteranges media type. | multipart/byteranges media type. | |||
| This document obsoletes the portions of RFC 7230 that are independent | This document obsoletes the portions of RFC 7230 that are independent | |||
| of the HTTP/1.1 messaging syntax and connection management, with the | of the HTTP/1.1 messaging syntax and connection management, with the | |||
| changes being summarized in Appendix B. The other parts of RFC 7230 | changes being summarized in Appendix B. The other parts of RFC 7230 | |||
| are obsoleted by "HTTP/1.1 Messaging" [Messaging]. This document | are obsoleted by "HTTP/1.1 Messaging" [Messaging]. This document | |||
| also obsoletes RFC 7231 (see Appendix C), RFC 7232 (see Appendix D), | also obsoletes RFC 7231 (see Appendix C), RFC 7232 (see Appendix D), | |||
| RFC 7233 (see Appendix E), and RFC 7235 (see Appendix F). | RFC 7233 (see Appendix E), and RFC 7235 (see Appendix F). | |||
| 1.1. Requirements Notation | 1.1. Requirements Notation | |||
| skipping to change at page 9, line 31 ¶ | skipping to change at page 9, line 31 ¶ | |||
| expanded to standard ABNF notation. | expanded to standard ABNF notation. | |||
| As a convention, ABNF rule names prefixed with "obs-" denote | As a convention, ABNF rule names prefixed with "obs-" denote | |||
| "obsolete" grammar rules that appear for historical reasons. | "obsolete" grammar rules that appear for historical reasons. | |||
| The following core rules are included by reference, as defined in | The following core rules are included by reference, as defined in | |||
| Appendix B.1 of [RFC5234]: ALPHA (letters), CR (carriage return), | Appendix B.1 of [RFC5234]: ALPHA (letters), CR (carriage return), | |||
| CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double | CRLF (CR LF), CTL (controls), DIGIT (decimal 0-9), DQUOTE (double | |||
| quote), HEXDIG (hexadecimal 0-9/A-F/a-f), HTAB (horizontal tab), LF | quote), HEXDIG (hexadecimal 0-9/A-F/a-f), HTAB (horizontal tab), LF | |||
| (line feed), OCTET (any 8-bit sequence of data), SP (space), and | (line feed), OCTET (any 8-bit sequence of data), SP (space), and | |||
| VCHAR (any visible US-ASCII character). [[CREF1: Range also uses | VCHAR (any visible US-ASCII character). | |||
| CHAR, which is probably a bug.]] | ||||
| The rules below are defined in [Messaging]: | The rules below are defined in [Messaging]: | |||
| obs-fold = <obs-fold, see [Messaging], Section 5.2> | obs-fold = <obs-fold, see [Messaging], Section 5.2> | |||
| protocol-name = <protocol-name, see [Messaging], Section 9.7> | protocol-name = <protocol-name, see [Messaging], Section 9.7> | |||
| protocol-version = <protocol-version, see [Messaging], Section 9.7> | protocol-version = <protocol-version, see [Messaging], Section 9.7> | |||
| request-target = <request-target, see [Messaging], Section 3.2> | request-target = <request-target, see [Messaging], Section 3.2> | |||
| This specification uses the terms "character", "character encoding | This specification uses the terms "character", "character encoding | |||
| scheme", "charset", and "protocol element" as they are defined in | scheme", "charset", and "protocol element" as they are defined in | |||
| skipping to change at page 15, line 41 ¶ | skipping to change at page 15, line 41 ¶ | |||
| identified by a Uniform Resource Identifier (URI), as described in | identified by a Uniform Resource Identifier (URI), as described in | |||
| Section 2.4. | Section 2.4. | |||
| One design goal of HTTP is to separate resource identification from | One design goal of HTTP is to separate resource identification from | |||
| request semantics, which is made possible by vesting the request | request semantics, which is made possible by vesting the request | |||
| semantics in the request method (Section 7) and a few request- | semantics in the request method (Section 7) and a few request- | |||
| modifying header fields (Section 8). If there is a conflict between | modifying header fields (Section 8). If there is a conflict between | |||
| 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 7.2.1, the method semantics take precedence. | described in Section 7.2.1, the method semantics take precedence. | |||
| IANA maintains the registry of URI Schemes [BCP115] at | IANA maintains the registry of URI Schemes [BCP35] at | |||
| <https://www.iana.org/assignments/uri-schemes/>. [[CREF2: Although | <https://www.iana.org/assignments/uri-schemes/>. Although requests | |||
| requests might target any URI scheme, the following schemes are | might target any URI scheme, the following schemes are inherent to | |||
| 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 | | |||
| +------------+------------------------------------+---------------+ | +------------+------------------------------------+---------------+ | |||
| 2.5.1. http URI Scheme | 2.5.1. http URI Scheme | |||
| skipping to change at page 21, line 18 ¶ | skipping to change at page 21, line 18 ¶ | |||
| The HTTP version number consists of two decimal digits separated by a | The HTTP version number consists of two decimal digits separated by a | |||
| "." (period or decimal point). The first digit ("major version") | "." (period or decimal point). The first digit ("major version") | |||
| indicates the HTTP messaging syntax, whereas the second digit ("minor | indicates the HTTP messaging syntax, whereas the second digit ("minor | |||
| version") indicates the highest minor version within that major | version") indicates the highest minor version within that major | |||
| version to which the sender is conformant and able to understand for | version to which the sender is conformant and able to understand for | |||
| future communication. | future communication. | |||
| The protocol version as a whole indicates the sender's conformance | The protocol version as a whole indicates the sender's conformance | |||
| with the set of requirements laid out in that version's corresponding | with the set of requirements laid out in that version's corresponding | |||
| specification of HTTP. [[CREF3: For example, the version "HTTP/1.1" | specification of HTTP. For example, the version "HTTP/1.1" is | |||
| is defined by the combined specifications of this document, "HTTP | defined by the combined specifications of this document, "HTTP | |||
| Caching" [Caching], and "HTTP/1.1 Messaging" [Messaging]. ]] | Caching" [Caching], and "HTTP/1.1 Messaging" [Messaging]. | |||
| The minor version advertises the sender's communication capabilities | The minor version advertises the sender's communication capabilities | |||
| even when the sender is only using a backwards-compatible subset of | even when the sender is only using a backwards-compatible subset of | |||
| the protocol, thereby letting the recipient know that more advanced | the protocol, thereby letting the recipient know that more advanced | |||
| features can be used in response (by servers) or in future requests | features can be used in response (by servers) or in future requests | |||
| (by clients). | (by clients). | |||
| A client SHOULD send a request version equal to the highest version | A client SHOULD send a request version equal to the highest version | |||
| to which the client is conformant and whose major version is no | to which the client is conformant and whose major version is no | |||
| higher than the highest version supported by the server, if this is | higher than the highest version supported by the server, if this is | |||
| skipping to change at page 22, line 15 ¶ | skipping to change at page 22, line 15 ¶ | |||
| When an HTTP message is received with a major version number that the | When an HTTP message is received with a major version number that the | |||
| recipient implements, but a higher minor version number than what the | recipient implements, but a higher minor version number than what the | |||
| recipient implements, the recipient SHOULD process the message as if | recipient implements, the recipient SHOULD process the message as if | |||
| it were in the highest minor version within that major version to | it were in the highest minor version within that major version to | |||
| which the recipient is conformant. A recipient can assume that a | which the recipient is conformant. A recipient can assume that a | |||
| message with a higher minor version, when sent to a recipient that | message with a higher minor version, when sent to a recipient that | |||
| has not yet indicated support for that higher version, is | has not yet indicated support for that higher version, is | |||
| sufficiently backwards-compatible to be safely processed by any | sufficiently backwards-compatible to be safely processed by any | |||
| implementation of the same major version. | implementation of the same major version. | |||
| [[CREF4: When a major version of HTTP does not define any minor | [[CREF1: When a major version of HTTP does not define any minor | |||
| versions, the minor version "0" is implied and ought to be used when | versions, the minor version "0" is implied and ought to be used when | |||
| referring to that protocol within a protocol element that requires | referring to that protocol within a protocol element that requires | |||
| sending a minor version. ]] | sending a minor version. ]] | |||
| 4. Message Abstraction | 4. Message Abstraction | |||
| [[CREF5: Each major version of HTTP defines its own syntax for the | Each major version of HTTP defines its own syntax for the inclusion | |||
| inclusion of information in messages. Nevertheless, a common | of information in messages. Nevertheless, a common abstraction is | |||
| abstraction is that a message includes some form of envelope/framing, | that a message includes some form of envelope/framing, a potential | |||
| a potential set of named data fields, and a potential body. This | set of named data fields, and a potential body. This section defines | |||
| section defines the abstraction for message fields as field-name and | the abstraction for message fields as field-name and field-value | |||
| field-value pairs. ]] | pairs. | |||
| 4.1. Field Names | 4.1. Field Names | |||
| Header fields are key:value pairs that can be used to communicate | Header fields are key:value pairs that can be used to communicate | |||
| data about the message, its payload, the target resource, or the | data about the message, its payload, the target resource, or the | |||
| connection (i.e., control data). | connection (i.e., control data). | |||
| The requirements for header field names are defined in [BCP90]. | The requirements for header field names are defined in [BCP90]. | |||
| The field-name token labels the corresponding field-value as having | The field-name token labels the corresponding field-value as having | |||
| skipping to change at page 26, line 20 ¶ | skipping to change at page 26, line 20 ¶ | |||
| registered field name, wherein the rule defines the valid grammar for | registered field name, wherein the rule defines the valid grammar for | |||
| that field's corresponding field values (i.e., after the field-value | that field's corresponding field values (i.e., after the field-value | |||
| has been extracted by a generic field parser). | has been extracted by a generic field parser). | |||
| field-value = *( field-content / obs-fold ) | field-value = *( field-content / obs-fold ) | |||
| field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] | field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] | |||
| field-vchar = VCHAR / obs-text | field-vchar = VCHAR / obs-text | |||
| Historically, HTTP header field values could be extended over | Historically, HTTP header field values could be extended over | |||
| multiple lines by preceding each extra line with at least one space | multiple lines by preceding each extra line with at least one space | |||
| or horizontal tab (obs-fold). [[CREF6: This document assumes that | or horizontal tab (obs-fold). [[CREF2: This document assumes that | |||
| any such obs-fold has been replaced with one or more SP octets prior | any such obs-fold has been replaced with one or more SP octets prior | |||
| to interpreting the field value, as described in Section 5.2 of | to interpreting the field value, as described in Section 5.2 of | |||
| [Messaging].]] | [Messaging].]] | |||
| Historically, HTTP has allowed field content with text in the | Historically, HTTP has allowed field content with text in the | |||
| ISO-8859-1 charset [ISO-8859-1], supporting other charsets only | ISO-8859-1 charset [ISO-8859-1], supporting other charsets only | |||
| through use of [RFC2047] encoding. In practice, most HTTP header | through use of [RFC2047] encoding. In practice, most HTTP header | |||
| field values use only a subset of the US-ASCII charset [USASCII]. | field values use only a subset of the US-ASCII charset [USASCII]. | |||
| Newly defined header fields SHOULD limit their field values to | Newly defined header fields SHOULD limit their field values to | |||
| US-ASCII octets. A recipient SHOULD treat other octets in field | US-ASCII octets. A recipient SHOULD treat other octets in field | |||
| skipping to change at page 28, line 9 ¶ | skipping to change at page 28, line 9 ¶ | |||
| tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" | tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" | |||
| / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" | / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" | |||
| / DIGIT / ALPHA | / DIGIT / ALPHA | |||
| ; any VCHAR, except delimiters | ; any VCHAR, except delimiters | |||
| A string of text is parsed as a single value if it is quoted using | A string of text is parsed as a single value if it is quoted using | |||
| double-quote marks. | double-quote marks. | |||
| quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE | quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE | |||
| qdtext = HTAB / SP /%x21 / %x23-5B / %x5D-7E / obs-text | qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text | |||
| obs-text = %x80-FF | obs-text = %x80-FF | |||
| Comments can be included in some HTTP header fields by surrounding | Comments can be included in some HTTP header fields by surrounding | |||
| the comment text with parentheses. Comments are only allowed in | the comment text with parentheses. Comments are only allowed in | |||
| fields containing "comment" as part of their field value definition. | fields containing "comment" as part of their field value definition. | |||
| comment = "(" *( ctext / quoted-pair / comment ) ")" | comment = "(" *( ctext / quoted-pair / comment ) ")" | |||
| ctext = HTAB / SP / %x21-27 / %x2A-5B / %x5D-7E / obs-text | ctext = HTAB / SP / %x21-27 / %x2A-5B / %x5D-7E / obs-text | |||
| The backslash octet ("\") can be used as a single-octet quoting | The backslash octet ("\") can be used as a single-octet quoting | |||
| skipping to change at page 28, line 38 ¶ | skipping to change at page 28, line 38 ¶ | |||
| that string. A sender SHOULD NOT generate a quoted-pair in a comment | that string. A sender SHOULD NOT generate a quoted-pair in a comment | |||
| except where necessary to quote parentheses ["(" and ")"] and | except where necessary to quote parentheses ["(" and ")"] and | |||
| backslash octets occurring within that comment. | backslash octets occurring within that comment. | |||
| 4.2.4. Designing New Field Values | 4.2.4. Designing New Field Values | |||
| New header field values typically have their syntax defined using | New header field values typically have their syntax defined using | |||
| ABNF ([RFC5234]), using the extension defined in Section 11 as | ABNF ([RFC5234]), using the extension defined in Section 11 as | |||
| necessary, and are usually constrained to the range of US-ASCII | necessary, and are usually constrained to the range of US-ASCII | |||
| characters. Header fields needing a greater range of characters can | characters. Header fields needing a greater range of characters can | |||
| use an encoding such as the one defined in [RFC5987]. | use an encoding such as the one defined in [RFC8187]. | |||
| Leading and trailing whitespace in raw field values is removed upon | Leading and trailing whitespace in raw field values is removed upon | |||
| field parsing (Section 5.1 of [Messaging]). Field definitions where | field parsing (Section 5.1 of [Messaging]). Field definitions where | |||
| leading or trailing whitespace in values is significant will have to | leading or trailing whitespace in values is significant will have to | |||
| use a container syntax such as quoted-string (Section 4.2.3). | use a container syntax such as quoted-string (Section 4.2.3). | |||
| Because commas (",") are used as a generic delimiter between field- | Because commas (",") are used as a generic delimiter between field- | |||
| values, they need to be treated with care if they are allowed in the | values, they need to be treated with care if they are allowed in the | |||
| field-value. Typically, components that might contain a comma are | field-value. Typically, components that might contain a comma are | |||
| protected with double-quotes using the quoted-string ABNF production. | protected with double-quotes using the quoted-string ABNF production. | |||
| skipping to change at page 30, line 7 ¶ | skipping to change at page 30, line 7 ¶ | |||
| OWS = *( SP / HTAB ) | OWS = *( SP / HTAB ) | |||
| ; optional whitespace | ; optional whitespace | |||
| RWS = 1*( SP / HTAB ) | RWS = 1*( SP / HTAB ) | |||
| ; required whitespace | ; required whitespace | |||
| BWS = OWS | BWS = OWS | |||
| ; "bad" whitespace | ; "bad" whitespace | |||
| 4.4. Trailer | 4.4. Trailer | |||
| [[CREF7: The "Trailer" header field in a message indicates fields | [[CREF3: The "Trailer" header field in a message indicates fields | |||
| that the sender anticipates sending after the message header block | that the sender anticipates sending after the message header block | |||
| (i.e., during or after the payload is sent). This is typically used | (i.e., during or after the payload is sent). This is typically used | |||
| to supply metadata that might be dynamically generated while the data | to supply metadata that might be dynamically generated while the data | |||
| is sent, such as a message integrity check, digital signature, or | is sent, such as a message integrity check, digital signature, or | |||
| post-processing status. ]] | post-processing status. ]] | |||
| Trailer = 1#field-name | Trailer = 1#field-name | |||
| [[CREF8: How, where, and when trailer fields might be sent depends on | [[CREF4: How, where, and when trailer fields might be sent depends on | |||
| both the protocol in use (HTTP version and/or transfer coding) and | both the protocol in use (HTTP version and/or transfer coding) and | |||
| the semantics of each named header field. Many header fields cannot | the semantics of each named header field. Many header fields cannot | |||
| be processed outside the header section because their evaluation is | be processed outside the header section because their evaluation is | |||
| necessary for message routing, authentication, or configuration prior | necessary for message routing, authentication, or configuration prior | |||
| to receiving the representation data. ]] | to receiving the representation data. ]] | |||
| 5. Message Routing | 5. 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 | |||
| skipping to change at page 31, line 33 ¶ | skipping to change at page 31, line 33 ¶ | |||
| "https" (Section 2.5.2) schemes. | "https" (Section 2.5.2) schemes. | |||
| HTTP requirements regarding connection management are defined in | HTTP requirements regarding connection management are defined in | |||
| Section 9 of [Messaging]. | Section 9 of [Messaging]. | |||
| 5.3. Effective Request URI | 5.3. Effective Request URI | |||
| Once an inbound connection is obtained, the client sends an HTTP | Once an inbound connection is obtained, the client sends an HTTP | |||
| request message (Section 2 of [Messaging]). | request message (Section 2 of [Messaging]). | |||
| [[CREF9: Depending on the nature of the request, the client's target | Depending on the nature of the request, the client's target URI might | |||
| URI might be split into components and transmitted (or implied) | be split into components and transmitted (or implied) within various | |||
| within various parts of a request message. These parts are | parts of a request message. These parts are recombined by each | |||
| recombined by each recipient, in accordance with their local | recipient, in accordance with their local configuration and incoming | |||
| configuration and incoming connection context, to form an "effective | connection context, to form an "effective request URI" for | |||
| request URI" for identifying the intended target resource with | identifying the intended target resource with respect to that server. | |||
| respect to that server. Section 3.3 of [Messaging] defines how a | Section 3.3 of [Messaging] defines how a server determines the | |||
| server determines the effective request URI for an HTTP/1.1 | effective request URI for an HTTP/1.1 request. | |||
| request.]] | ||||
| For a user agent, the effective request URI is the target URI. | For a user agent, the effective request URI is the target URI. | |||
| Once the effective request URI has been constructed, an origin server | Once the effective request URI has been constructed, an origin server | |||
| needs to decide whether or not to provide service for that URI via | needs to decide whether or not to provide service for that URI via | |||
| the connection in which the request was received. For example, the | 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 request-target or Host | such that the information within a received request-target or Host | |||
| header field differs from the host or port upon which the connection | header field differs from the host or port upon which the connection | |||
| has been made. If the connection is from a trusted gateway, that | has been made. If the connection is from a trusted gateway, that | |||
| skipping to change at page 39, line 48 ¶ | skipping to change at page 39, line 48 ¶ | |||
| 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 | |||
| in a request, as described in [RFC2388], and the "multipart/ | in a request, as described in [RFC7578], and the "multipart/ | |||
| byteranges" type is defined by this specification for use in some 206 | byteranges" type is defined by this specification for use in some 206 | |||
| (Partial Content) responses Section 9.3.7. | (Partial Content) responses (see Section 9.3.7). | |||
| 6.1.2. Content Codings | 6.1.2. Content Codings | |||
| Content coding values indicate an encoding transformation that has | Content coding values indicate an encoding transformation that has | |||
| been or can be applied to a representation. Content codings are | been or can be applied to a representation. Content codings are | |||
| primarily used to allow a representation to be compressed or | primarily used to allow a representation to be compressed or | |||
| otherwise usefully transformed without losing the identity of its | otherwise usefully transformed without losing the identity of its | |||
| underlying media type and without loss of information. Frequently, | underlying media type and without loss of information. Frequently, | |||
| the representation is stored in coded form, transmitted directly, and | the representation is stored in coded form, transmitted directly, and | |||
| only decoded by the final recipient. | only decoded by the final recipient. | |||
| skipping to change at page 41, line 41 ¶ | skipping to change at page 41, line 41 ¶ | |||
| o Description | o Description | |||
| o Pointer to specification text | o Pointer to specification text | |||
| Names of content codings MUST NOT overlap with names of transfer | Names of content codings MUST NOT overlap with names of transfer | |||
| codings (Section 7 of [Messaging]), unless the encoding | codings (Section 7 of [Messaging]), unless the encoding | |||
| transformation is identical (as is the case for the compression | transformation is identical (as is the case for the compression | |||
| codings defined in Section 6.1.2). | codings defined in Section 6.1.2). | |||
| Values to be added to this namespace require IETF Review (see | Values to be added to this namespace require IETF Review (see | |||
| Section 4.1 of [RFC5226]) 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 6.1.2. | coding defined in Section 6.1.2. | |||
| 6.1.3. Language Tags | 6.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 Content- | |||
| skipping to change at page 45, line 9 ¶ | skipping to change at page 45, line 9 ¶ | |||
| maintained at <https://www.iana.org/assignments/http-parameters>. | maintained at <https://www.iana.org/assignments/http-parameters>. | |||
| Registration of an HTTP Range Unit MUST include the following fields: | Registration of an HTTP Range Unit MUST include the following fields: | |||
| o Name | o Name | |||
| o Description | o Description | |||
| o Pointer to specification text | o Pointer to specification text | |||
| Values to be added to this namespace require IETF Review (see | Values to be added to this namespace require IETF Review (see | |||
| [RFC5226], Section 4.1). | [RFC8126], Section 4.8). | |||
| 6.2. Representation Metadata | 6.2. Representation Metadata | |||
| Representation header fields provide metadata about the | Representation header fields provide metadata about the | |||
| representation. When a message includes a payload body, the | representation. When a message includes a payload body, the | |||
| representation header fields describe how to interpret the | representation header fields describe how to interpret the | |||
| representation data enclosed in the payload body. In a response to a | representation data enclosed in the payload body. In a response to a | |||
| HEAD request, the representation header fields describe the | HEAD request, the representation header fields describe the | |||
| representation data that would have been enclosed in the payload body | representation data that would have been enclosed in the payload body | |||
| if the same request had been a GET. | if the same request had been a GET. | |||
| skipping to change at page 48, line 12 ¶ | skipping to change at page 48, line 12 ¶ | |||
| 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 to textual documents. | limited to textual documents. | |||
| 6.2.4. Content-Length | 6.2.4. Content-Length | |||
| [[CREF10: The "Content-Length" header field indicates the number of | [[CREF5: The "Content-Length" header field indicates the number of | |||
| data octets (body length) for the representation. In some cases, | data 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 | |||
| skipping to change at page 53, line 31 ¶ | skipping to change at page 53, line 31 ¶ | |||
| byte-content-range = bytes-unit SP | byte-content-range = bytes-unit SP | |||
| ( byte-range-resp / unsatisfied-range ) | ( byte-range-resp / unsatisfied-range ) | |||
| byte-range-resp = byte-range "/" ( complete-length / "*" ) | byte-range-resp = byte-range "/" ( complete-length / "*" ) | |||
| byte-range = first-byte-pos "-" last-byte-pos | byte-range = first-byte-pos "-" last-byte-pos | |||
| unsatisfied-range = "*/" complete-length | unsatisfied-range = "*/" complete-length | |||
| complete-length = 1*DIGIT | complete-length = 1*DIGIT | |||
| other-content-range = other-range-unit SP other-range-resp | other-content-range = other-range-unit SP other-range-resp | |||
| other-range-resp = *CHAR | other-range-resp = *VCHAR | |||
| If a 206 (Partial Content) response contains a Content-Range header | If a 206 (Partial Content) response contains a Content-Range header | |||
| field with a range unit (Section 6.1.4) that the recipient does not | field with a range unit (Section 6.1.4) that the recipient does not | |||
| understand, the recipient MUST NOT attempt to recombine it with a | understand, the recipient MUST NOT attempt to recombine it with a | |||
| stored representation. A proxy that receives such a message SHOULD | stored representation. A proxy that receives such a message SHOULD | |||
| forward it downstream. | forward it downstream. | |||
| For byte ranges, a sender SHOULD indicate the complete length of the | For byte ranges, a sender SHOULD indicate the complete length of the | |||
| representation from which the range has been extracted, unless the | representation from which the range has been extracted, unless the | |||
| complete length is unknown or difficult to determine. An asterisk | complete length is unknown or difficult to determine. An asterisk | |||
| skipping to change at page 68, line 38 ¶ | skipping to change at page 68, line 38 ¶ | |||
| previously created using a PUT request, or identified via the | previously created using a PUT request, or identified via the | |||
| Location header field after a 201 (Created) response to a POST | Location header field after a 201 (Created) response to a POST | |||
| request, might allow a corresponding DELETE request to undo those | request, might allow a corresponding DELETE request to undo those | |||
| actions. Similarly, custom user agent implementations that implement | actions. Similarly, custom user agent implementations that implement | |||
| an authoring function, such as revision control clients using HTTP | an authoring function, such as revision control clients using HTTP | |||
| for remote operations, might use DELETE based on an assumption that | for remote operations, might use DELETE based on an assumption that | |||
| the server's URI space has been crafted to correspond to a version | the server's 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 a 202 (Accepted) status code if the action will likely succeed | send | |||
| but has not yet been enacted, a 204 (No Content) status code if the | ||||
| action has been enacted and no further information is to be supplied, | o a 202 (Accepted) status code if the action will likely succeed but | |||
| or a 200 (OK) status code if the action has been enacted and the | has not yet been enacted, | |||
| response message includes a representation describing the status. | ||||
| o a 204 (No Content) status code if the action has been enacted and | ||||
| no further information is to be supplied, or | ||||
| o a 200 (OK) status code if the action has been enacted and the | ||||
| response message includes a representation describing the status. | ||||
| A payload within a DELETE request message has no defined semantics; | A payload within a DELETE request message has no defined semantics; | |||
| sending a payload body on a DELETE request might cause some existing | sending a payload body on a DELETE request might cause some existing | |||
| implementations to reject the request. | implementations to reject the request. | |||
| Responses to the DELETE method are not cacheable. If a DELETE | Responses to the DELETE method are not cacheable. If a DELETE | |||
| request passes through a cache that has one or more stored responses | request passes through a cache that has one or more stored responses | |||
| for the effective request URI, those stored responses will be | for the effective request URI, those stored responses will be | |||
| invalidated (see Section 4.4 of [Caching]). | invalidated (see Section 4.4 of [Caching]). | |||
| skipping to change at page 72, line 31 ¶ | skipping to change at page 72, line 35 ¶ | |||
| o Method Name (see Section 7) | o Method Name (see Section 7) | |||
| o Safe ("yes" or "no", see Section 7.2.1) | o Safe ("yes" or "no", see Section 7.2.1) | |||
| o Idempotent ("yes" or "no", see Section 7.2.2) | o Idempotent ("yes" or "no", see Section 7.2.2) | |||
| o Pointer to specification text | o Pointer to specification text | |||
| Values to be added to this namespace require IETF Review (see | Values to be added to this namespace require IETF Review (see | |||
| [RFC5226], Section 4.1). | [RFC8126], Section 4.8). | |||
| 7.4.2. Considerations for New Methods | 7.4.2. Considerations for New Methods | |||
| Standardized methods are generic; that is, they are potentially | Standardized methods are generic; that is, they are potentially | |||
| applicable to any resource, not just one particular media type, kind | applicable to any resource, not just one particular media type, kind | |||
| of resource, or application. As such, it is preferred that new | of resource, or application. As such, it is preferred that new | |||
| methods be registered in a document that isn't specific to a single | methods be registered in a document that isn't specific to a single | |||
| application or data format, since orthogonal technologies deserve | application or data format, since orthogonal technologies deserve | |||
| orthogonal specification. | orthogonal specification. | |||
| skipping to change at page 98, line 33 ¶ | skipping to change at page 98, line 33 ¶ | |||
| Registrations MUST include the following fields: | Registrations MUST include the following fields: | |||
| o Authentication Scheme Name | o Authentication Scheme Name | |||
| o Pointer to specification text | o Pointer to specification text | |||
| o Notes (optional) | o Notes (optional) | |||
| Values to be added to this namespace require IETF Review (see | Values to be added to this namespace require IETF Review (see | |||
| [RFC5226], Section 4.1). | [RFC8126], Section 4.8). | |||
| 8.5.5.2. Considerations for New Authentication Schemes | 8.5.5.2. Considerations for New Authentication Schemes | |||
| There are certain aspects of the HTTP Authentication framework that | There are certain aspects of the HTTP Authentication framework that | |||
| put constraints on how new authentication schemes can work: | put constraints on how new authentication schemes can work: | |||
| o HTTP authentication is presumed to be stateless: all of the | o HTTP authentication is presumed to be stateless: all of the | |||
| information necessary to authenticate a request MUST be provided | information necessary to authenticate a request MUST be provided | |||
| in the request, rather than be dependent on the server remembering | in the request, rather than be dependent on the server remembering | |||
| prior requests. Authentication based on, or bound to, the | prior requests. Authentication based on, or bound to, the | |||
| skipping to change at page 103, line 21 ¶ | skipping to change at page 103, line 21 ¶ | |||
| Likewise, implementations are encouraged not to use the product | Likewise, implementations are encouraged not to use the product | |||
| tokens of other implementations in order to declare compatibility | tokens of other implementations in order to declare compatibility | |||
| with them, as this circumvents the purpose of the field. If a user | with them, as this circumvents the purpose of the field. If a user | |||
| agent masquerades as a different user agent, recipients can assume | agent masquerades as a different user agent, recipients can assume | |||
| that the user intentionally desires to see responses tailored for | that the user intentionally desires to see responses tailored for | |||
| that identified user agent, even if they might not work as well for | that identified user agent, even if they might not work as well for | |||
| the actual user agent being used. | the actual user agent being used. | |||
| 9. Response Status Codes | 9. Response Status Codes | |||
| The status-code element is a three-digit integer code giving the | The (response) status code is a three-digit integer code giving the | |||
| result of the attempt to understand and satisfy the request. | result of the attempt to understand and satisfy the request. | |||
| HTTP status codes are extensible. HTTP clients are not required to | HTTP status codes are extensible. HTTP clients are not required to | |||
| understand the meaning of all registered status codes, though such | understand the meaning of all registered status codes, though such | |||
| understanding is obviously desirable. However, a client MUST | understanding is obviously desirable. However, a client MUST | |||
| understand the class of any status code, as indicated by the first | understand the class of any status code, as indicated by the first | |||
| digit, and treat an unrecognized status code as being equivalent to | digit, and treat an unrecognized status code as being equivalent to | |||
| the x00 status code of that class, with the exception that a | the x00 status code of that class, with the exception that a | |||
| recipient MUST NOT cache a response with an unrecognized status code. | recipient MUST NOT cache a response with an unrecognized status code. | |||
| For example, if an unrecognized status code of 471 is received by a | For example, if an unrecognized status code of 471 is received by a | |||
| client, the client can assume that there was something wrong with its | client, the client can assume that there was something wrong with its | |||
| request and treat the response as if it had received a 400 (Bad | request and treat the response as if it had received a 400 (Bad | |||
| Request) status code. The response message will usually contain a | Request) status code. The response message will usually contain a | |||
| representation that explains the status. | representation that explains the status. | |||
| The first digit of the status-code defines the class of response. | The first digit of the status code defines the class of response. | |||
| The last two digits do not have any categorization role. There are | The last two digits do not have any categorization role. There are | |||
| five values for the first digit: | five values for the first digit: | |||
| o 1xx (Informational): The request was received, continuing process | o 1xx (Informational): The request was received, continuing process | |||
| o 2xx (Successful): The request was successfully received, | o 2xx (Successful): The request was successfully received, | |||
| understood, and accepted | understood, and accepted | |||
| o 3xx (Redirection): Further action needs to be taken in order to | o 3xx (Redirection): Further action needs to be taken in order to | |||
| complete the request | complete the request | |||
| skipping to change at page 110, line 23 ¶ | skipping to change at page 110, line 23 ¶ | |||
| indicate a zero-length payload for the response by including a | indicate a zero-length payload for the response by including a | |||
| Transfer-Encoding header field with a value of chunked and a message | Transfer-Encoding header field with a value of chunked and a message | |||
| body consisting of a single chunk of zero-length; or, c) close the | body consisting of a single chunk of zero-length; or, c) close the | |||
| connection immediately after sending the blank line terminating the | connection immediately after sending the blank line terminating the | |||
| header section. | header section. | |||
| 9.3.7. 206 Partial Content | 9.3.7. 206 Partial Content | |||
| The 206 (Partial Content) status code indicates that the server is | The 206 (Partial Content) status code indicates that the server is | |||
| successfully fulfilling a range request for the target resource by | successfully fulfilling a range request for the target resource by | |||
| transferring one or more parts of the selected representation that | transferring one or more parts of the selected representation. | |||
| correspond to the satisfiable ranges found in the request's Range | ||||
| header field (Section 8.3). | ||||
| When a 206 response is generated, the server MUST generate the | When a 206 response is generated, the server MUST generate the | |||
| following header fields, in addition to those required in the | following header fields, in addition to those required in the | |||
| subsections below, if the field would have been sent in a 200 (OK) | subsections below, if the field would have been sent in a 200 (OK) | |||
| response to the same request: Date, Cache-Control, ETag, Expires, | response to the same request: Date, Cache-Control, ETag, Expires, | |||
| Content-Location, and Vary. | Content-Location, and Vary. | |||
| If a 206 is generated in response to a request with an If-Range | If a 206 is generated in response to a request with an If-Range | |||
| header field, the sender SHOULD NOT generate other representation | header field, the sender SHOULD NOT generate other representation | |||
| header fields beyond those required, because the client is understood | header fields beyond those required, because the client is understood | |||
| skipping to change at page 113, line 31 ¶ | skipping to change at page 113, line 31 ¶ | |||
| (Partial Content) responses, each with one continuous range that is | (Partial Content) responses, each with one continuous range that is | |||
| indicated by a Content-Range header field. | indicated by a Content-Range header field. | |||
| 9.4. Redirection 3xx | 9.4. Redirection 3xx | |||
| The 3xx (Redirection) class of status code indicates that further | The 3xx (Redirection) class of status code indicates that further | |||
| action needs to be taken by the user agent in order to fulfill the | action needs to be taken by the user agent in order to fulfill the | |||
| request. If a Location header field (Section 10.1.2) is provided, | request. If a Location header field (Section 10.1.2) is provided, | |||
| the user agent MAY automatically redirect its request to the URI | the user agent MAY automatically redirect its request to the URI | |||
| referenced by the Location field value, even if the specific status | referenced by the Location field value, even if the specific status | |||
| code is not understood. Automatic redirection needs to done with | code is not understood. Automatic redirection needs to be done with | |||
| care for methods not known to be safe, as defined in Section 7.2.1, | care for methods not known to be safe, as defined in Section 7.2.1, | |||
| since the user might not wish to redirect an unsafe request. | since the user might not wish to redirect an unsafe request. | |||
| There are several types of redirects: | There are several types of redirects: | |||
| 1. Redirects that indicate the resource might be available at a | 1. Redirects that indicate the resource might be available at a | |||
| different URI, as provided by the Location field, as in the | different URI, as provided by the Location field, as in the | |||
| status codes 301 (Moved Permanently), 302 (Found), and 307 | status codes 301 (Moved Permanently), 302 (Found), and 307 | |||
| (Temporary Redirect). | (Temporary Redirect). | |||
| skipping to change at page 115, line 31 ¶ | skipping to change at page 115, line 31 ¶ | |||
| 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 the | |||
| URI header field as providing a list of alternative | 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 method. | |||
| However, lack of deployment and disagreement over syntax led to | However, lack of deployment and disagreement over syntax led to | |||
| both URI and Alternates (a subsequent proposal) being dropped from | both URI and Alternates (a subsequent proposal) being dropped from | |||
| this specification. It is possible to communicate the list using | this specification. It is possible to communicate the list using | |||
| a set of Link header fields [RFC5988], each with a relationship of | a set of Link header fields [RFC8288], each with a relationship of | |||
| "alternate", though deployment is a chicken-and-egg problem. | "alternate", though deployment is a chicken-and-egg problem. | |||
| 9.4.2. 301 Moved Permanently | 9.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 effective request URI to one or more of the new | references to the effective request URI to one or more of the new | |||
| references sent by the server, where possible. | references sent by the server, where possible. | |||
| skipping to change at page 118, line 28 ¶ | skipping to change at page 118, line 28 ¶ | |||
| 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: This status code is similar to 302 (Found), except that it | Note: This status code is similar to 302 (Found), except that it | |||
| does not allow changing the request method from POST to GET. This | does not allow changing the request method from POST to GET. This | |||
| specification defines no equivalent counterpart for 301 (Moved | specification defines no equivalent counterpart for 301 (Moved | |||
| Permanently) ([RFC7238], however, defines the status code 308 | Permanently) ([RFC7538], however, defines the status code 308 | |||
| (Permanent Redirect) for this purpose). | (Permanent Redirect) for this purpose). | |||
| 9.5. Client Error 4xx | 9.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 122, line 9 ¶ | skipping to change at page 122, line 9 ¶ | |||
| 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 | |||
| (Section 6.2.4). The client MAY repeat the request if it adds a | (Section 6.2.4). The client MAY repeat the request if it adds a | |||
| valid Content-Length header field containing the length of the | valid Content-Length header field containing the length of the | |||
| message body in the request message. | message body in the request message. | |||
| 9.5.13. 412 Precondition Failed | 9.5.13. 412 Precondition Failed | |||
| The 412 (Precondition Failed) status code indicates that one or more | The 412 (Precondition Failed) status code indicates that one or more | |||
| conditions given in the request header fields evaluated to false when | conditions given in the request header fields evaluated to false when | |||
| tested on the server. This response code allows the client to place | tested on the server. This response status code allows the client to | |||
| preconditions on the current resource state (its current | place preconditions on the current resource state (its current | |||
| representations and metadata) and, thus, prevent the request method | representations and metadata) and, thus, prevent the request method | |||
| from being applied if the target resource is in an unexpected state. | from being applied if the target resource is in an unexpected state. | |||
| 9.5.14. 413 Payload Too Large | 9.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 close | than the server is willing or able to process. The server MAY close | |||
| the connection to prevent the client from continuing the request. | the connection to prevent the client from continuing the request. | |||
| skipping to change at page 123, line 9 ¶ | skipping to change at page 123, line 9 ¶ | |||
| 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 Content- | |||
| Type or Content-Encoding, or as a result of inspecting the data | Type or Content-Encoding, or as a result of inspecting the data | |||
| directly. | directly. | |||
| 9.5.17. 416 Range Not Satisfiable | 9.5.17. 416 Range Not Satisfiable | |||
| The 416 (Range Not Satisfiable) status code indicates that none of | The 416 (Range Not Satisfiable) status code indicates that none of | |||
| the ranges in the request's Range header field (Section 8.3) overlap | the ranges in the request's Range header field (Section 8.3) overlap | |||
| the current extent of the selected resource or that the set of ranges | the current extent of the selected representation or that the set of | |||
| requested has been rejected due to invalid ranges or an excessive | ranges requested has been rejected due to invalid ranges or an | |||
| request of small or overlapping ranges. | excessive request of small or overlapping ranges. | |||
| For byte ranges, failing to overlap the current extent means that the | For byte ranges, failing to overlap the current extent means that the | |||
| first-byte-pos of all of the byte-range-spec values were greater than | first-byte-pos of all of the byte-range-spec values were greater than | |||
| the current length of the selected representation. When this status | the current length of the selected representation. When this status | |||
| code is generated in response to a byte-range request, the sender | code is generated in response to a byte-range request, the sender | |||
| SHOULD generate a Content-Range header field specifying the current | SHOULD generate a Content-Range header field specifying the current | |||
| length of the selected representation (Section 6.3.3). | length of the selected representation (Section 6.3.3). | |||
| For example: | For example: | |||
| skipping to change at page 125, line 47 ¶ | skipping to change at page 125, line 47 ¶ | |||
| Additional status codes, outside the scope of this specification, | Additional status codes, outside the scope of this specification, | |||
| have been specified for use in HTTP. All such status codes ought to | have been specified for use in HTTP. All such status codes ought to | |||
| be registered within the "Hypertext Transfer Protocol (HTTP) Status | be registered within the "Hypertext Transfer Protocol (HTTP) Status | |||
| Code Registry". | Code Registry". | |||
| 9.7.1. Status Code Registry | 9.7.1. Status Code Registry | |||
| The "Hypertext Transfer Protocol (HTTP) Status Code Registry", | The "Hypertext Transfer Protocol (HTTP) Status Code Registry", | |||
| maintained by IANA at <https://www.iana.org/assignments/http-status- | maintained by IANA at <https://www.iana.org/assignments/http-status- | |||
| codes>, registers status-code numbers. | codes>, registers status code numbers. | |||
| A registration MUST include the following fields: | A registration MUST include the following fields: | |||
| o Status Code (3 digits) | o Status Code (3 digits) | |||
| o Short Description | o Short Description | |||
| o Pointer to specification text | o Pointer to specification text | |||
| Values to be added to the HTTP status code namespace require IETF | Values to be added to the HTTP status code namespace require IETF | |||
| Review (see [RFC5226], Section 4.1). | Review (see [RFC8126], Section 4.8). | |||
| 9.7.2. Considerations for New Status Codes | 9.7.2. Considerations for New Status Codes | |||
| When it is necessary to express semantics for a response that are not | When it is necessary to express semantics for a response that are not | |||
| defined by current status codes, a new status code can be registered. | defined by current status codes, a new status code can be registered. | |||
| Status codes are generic; they are potentially applicable to any | Status codes are generic; they are potentially applicable to any | |||
| resource, not just one particular media type, kind of resource, or | resource, not just one particular media type, kind of resource, or | |||
| application of HTTP. As such, it is preferred that new status codes | application of HTTP. As such, it is preferred that new status codes | |||
| be registered in a document that isn't specific to a single | be registered in a document that isn't specific to a single | |||
| application. | application. | |||
| skipping to change at page 147, line 40 ¶ | skipping to change at page 147, line 40 ¶ | |||
| For example, given these ABNF productions: | For example, given these ABNF productions: | |||
| example-list = 1#example-list-elmt | example-list = 1#example-list-elmt | |||
| example-list-elmt = token ; see Section 4.2.3 | example-list-elmt = token ; see Section 4.2.3 | |||
| Then the following are valid values for example-list (not including | Then the following are valid values for example-list (not including | |||
| the double quotes, which are present for delimitation only): | the double quotes, which are present for delimitation only): | |||
| "foo,bar" | "foo,bar" | |||
| "foo ,bar," | "foo ,bar," | |||
| "foo , ,bar,charlie " | "foo , ,bar,charlie" | |||
| In contrast, the following values would be invalid, since at least | In contrast, the following values would be invalid, since at least | |||
| one non-empty element is required by the example-list production: | one non-empty element is required by the example-list production: | |||
| "" | "" | |||
| "," | "," | |||
| ", ," | ", ," | |||
| Appendix A shows the collected ABNF for recipients after the list | Appendix A shows the collected ABNF for recipients after the list | |||
| constructs have been expanded. | constructs have been expanded. | |||
| skipping to change at page 156, line 43 ¶ | skipping to change at page 156, line 43 ¶ | |||
| This is of particular concern when an origin server hosts resources | This is of particular concern when an origin server hosts resources | |||
| for multiple parties under the same canonical root URI | for multiple parties under the same canonical root URI | |||
| (Section 8.5.2). Possible mitigation strategies include restricting | (Section 8.5.2). Possible mitigation strategies include restricting | |||
| direct access to authentication credentials (i.e., not making the | direct access to authentication credentials (i.e., not making the | |||
| content of the Authorization request header field available), and | content of the Authorization request header field available), and | |||
| separating protection spaces by using a different host name (or port | separating protection spaces by using a different host name (or port | |||
| number) for each party. | number) for each party. | |||
| 13. IANA Considerations | 13. IANA Considerations | |||
| This section is to be removed before publishing as an RFC. | ||||
| The change controller for the following registrations is: "IETF | The change controller for the following registrations is: "IETF | |||
| (iesg@ietf.org) - Internet Engineering Task Force". | (iesg@ietf.org) - Internet Engineering Task Force". | |||
| 13.1. URI Scheme Registration | 13.1. URI Scheme Registration | |||
| Please update the registry of URI Schemes [BCP115] at | Please update the registry of URI Schemes [BCP35] at | |||
| <https://www.iana.org/assignments/uri-schemes/> with the permanent | <https://www.iana.org/assignments/uri-schemes/> with the permanent | |||
| schemes listed in the first table of Section 2.5. | schemes listed in the first table of Section 2.5. | |||
| 13.2. Method Registration | 13.2. Method Registration | |||
| Please update the "Hypertext Transfer Protocol (HTTP) Method | Please update the "Hypertext Transfer Protocol (HTTP) Method | |||
| Registry" at <https://www.iana.org/assignments/http-methods> with the | Registry" at <https://www.iana.org/assignments/http-methods> with the | |||
| registration procedure of Section 7.4.1 and the method names | registration procedure of Section 7.4.1 and the method names | |||
| summarized in the table of Section 7.2. | summarized in the table of Section 7.2. | |||
| skipping to change at page 158, line 17 ¶ | skipping to change at page 158, line 10 ¶ | |||
| Please update the "Media Types" registry at | Please update the "Media Types" registry at | |||
| <https://www.iana.org/assignments/media-types> with the registration | <https://www.iana.org/assignments/media-types> with the registration | |||
| information in Section 6.3.4 for the media type "multipart/ | information in Section 6.3.4 for the media type "multipart/ | |||
| byteranges". | byteranges". | |||
| 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. Reschke, | |||
| Ed., "HTTP Caching", draft-ietf-httpbis-cache-01 (work in | Ed., "HTTP Caching", draft-ietf-httpbis-cache-02 (work in | |||
| progress), May 2018. | progress), July 2018. | |||
| [Messaging] | [Messaging] | |||
| Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP/1.1 Messaging", draft-ietf-httpbis-messaging-01 | Ed., "HTTP/1.1 Messaging", draft-ietf-httpbis-messaging-02 | |||
| (work in progress), May 2018. | (work in progress), July 2018. | |||
| [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. and J-L. Gailly, "ZLIB Compressed Data Format | |||
| Specification version 3.3", RFC 1950, | 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>. | |||
| skipping to change at page 159, line 42 ¶ | skipping to change at page 159, line 37 ¶ | |||
| [RFC6365] Hoffman, P. and J. Klensin, "Terminology Used in | [RFC6365] Hoffman, P. and J. Klensin, "Terminology Used in | |||
| Internationalization in the IETF", BCP 166, RFC 6365, | Internationalization in the IETF", BCP 166, RFC 6365, | |||
| DOI 10.17487/RFC6365, September 2011, | DOI 10.17487/RFC6365, September 2011, | |||
| <https://www.rfc-editor.org/info/rfc6365>. | <https://www.rfc-editor.org/info/rfc6365>. | |||
| [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 Technique for High-Performance Data | |||
| Compression", IEEE Computer 17(6), June 1984. | Compression", IEEE Computer 17(6), | |||
| DOI 10.1109/MC.1984.1659158, June 1984, | ||||
| <https://ieeexplore.ieee.org/document/1659158/>. | ||||
| 14.2. Informative References | 14.2. Informative References | |||
| [BCP115] Hansen, T., Hardie, T., and L. Masinter, "Guidelines and | ||||
| Registration Procedures for New URI Schemes", BCP 115, | ||||
| RFC 4395, February 2006, | ||||
| <https://www.rfc-editor.org/info/bcp115>. | ||||
| [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>. | |||
| [BCP178] Saint-Andre, P., Crocker, D., and M. Nottingham, | [BCP178] Saint-Andre, P., Crocker, D., and M. Nottingham, | |||
| "Deprecating the "X-" Prefix and Similar Constructs in | "Deprecating the "X-" Prefix and Similar Constructs in | |||
| Application Protocols", BCP 178, RFC 6648, June 2012, | Application Protocols", BCP 178, RFC 6648, June 2012, | |||
| <https://www.rfc-editor.org/info/bcp178>. | <https://www.rfc-editor.org/info/bcp178>. | |||
| [BCP35] Thaler, D., Ed., Hansen, T., and T. Hardie, "Guidelines | ||||
| and Registration Procedures for URI Schemes", BCP 35, | ||||
| RFC 7595, June 2015, | ||||
| <https://www.rfc-editor.org/info/bcp35>. | ||||
| [BCP90] Klyne, G., Nottingham, M., and J. Mogul, "Registration | [BCP90] Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
| Procedures for Message Header Fields", BCP 90, RFC 3864, | Procedures for Message Header Fields", BCP 90, RFC 3864, | |||
| September 2004, <https://www.rfc-editor.org/info/bcp90>. | September 2004, <https://www.rfc-editor.org/info/bcp90>. | |||
| [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", In Proceedings of the 2012 ACM Conference on | Software", In Proceedings of the 2012 ACM Conference on | |||
| Computer and Communications Security (CCS '12), pp. 38-49, | Computer and Communications Security (CCS '12), pp. 38-49, | |||
| skipping to change at page 161, line 29 ¶ | skipping to change at page 161, line 24 ¶ | |||
| [RFC2145] Mogul, J., Fielding, R., Gettys, J., and H. Nielsen, "Use | [RFC2145] Mogul, J., Fielding, R., Gettys, J., and H. Nielsen, "Use | |||
| and Interpretation of HTTP Version Numbers", RFC 2145, | and Interpretation of HTTP Version Numbers", RFC 2145, | |||
| DOI 10.17487/RFC2145, May 1997, | 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. Mutz, "Transparent Content Negotiation | |||
| in HTTP", RFC 2295, DOI 10.17487/RFC2295, March 1998, | in HTTP", RFC 2295, DOI 10.17487/RFC2295, March 1998, | |||
| <https://www.rfc-editor.org/info/rfc2295>. | <https://www.rfc-editor.org/info/rfc2295>. | |||
| [RFC2388] Masinter, L., "Returning Values from Forms: multipart/ | ||||
| form-data", RFC 2388, DOI 10.17487/RFC2388, August 1998, | ||||
| <https://www.rfc-editor.org/info/rfc2388>. | ||||
| [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>. | |||
| skipping to change at page 162, line 33 ¶ | skipping to change at page 162, line 25 ¶ | |||
| [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., 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>. | |||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | ||||
| DOI 10.17487/RFC5226, May 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5226>. | ||||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | |||
| (TLS) Protocol Version 1.2", RFC 5246, | (TLS) Protocol Version 1.2", RFC 5246, | |||
| DOI 10.17487/RFC5246, August 2008, | DOI 10.17487/RFC5246, August 2008, | |||
| <https://www.rfc-editor.org/info/rfc5246>. | <https://www.rfc-editor.org/info/rfc5246>. | |||
| [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, | |||
| <https://www.rfc-editor.org/info/rfc5789>. | <https://www.rfc-editor.org/info/rfc5789>. | |||
| [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | |||
| "Network Time Protocol Version 4: Protocol and Algorithms | "Network Time Protocol Version 4: Protocol and Algorithms | |||
| Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | |||
| <https://www.rfc-editor.org/info/rfc5905>. | <https://www.rfc-editor.org/info/rfc5905>. | |||
| [RFC5987] Reschke, J., "Character Set and Language Encoding for | ||||
| Hypertext Transfer Protocol (HTTP) Header Field | ||||
| Parameters", RFC 5987, DOI 10.17487/RFC5987, August 2010, | ||||
| <https://www.rfc-editor.org/info/rfc5987>. | ||||
| [RFC5988] Nottingham, M., "Web Linking", RFC 5988, | ||||
| DOI 10.17487/RFC5988, October 2010, | ||||
| <https://www.rfc-editor.org/info/rfc5988>. | ||||
| [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | |||
| DOI 10.17487/RFC6265, April 2011, | DOI 10.17487/RFC6265, April 2011, | |||
| <https://www.rfc-editor.org/info/rfc6265>. | <https://www.rfc-editor.org/info/rfc6265>. | |||
| [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. Reschke, Ed., "Hypertext Transfer | |||
| Protocol (HTTP/1.1): Message Syntax and Routing", | Protocol (HTTP/1.1): Message Syntax and Routing", | |||
| skipping to change at page 164, line 5 ¶ | skipping to change at page 163, line 30 ¶ | |||
| [RFC7233] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., | [RFC7233] Fielding, R., Ed., Lafon, Y., Ed., and J. 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. Reschke, Ed., "Hypertext Transfer | |||
| Protocol (HTTP/1.1): Authentication", RFC 7235, | 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>. | |||
| [RFC7238] Reschke, J., "The Hypertext Transfer Protocol Status Code | [RFC7538] Reschke, J., "The Hypertext Transfer Protocol Status Code | |||
| 308 (Permanent Redirect)", RFC 7238, DOI 10.17487/RFC7238, | 308 (Permanent Redirect)", RFC 7538, DOI 10.17487/RFC7538, | |||
| June 2014, <https://www.rfc-editor.org/info/rfc7238>. | April 2015, <https://www.rfc-editor.org/info/rfc7538>. | |||
| [RFC7578] Masinter, L., "Returning Values from Forms: multipart/ | ||||
| form-data", RFC 7578, DOI 10.17487/RFC7578, July 2015, | ||||
| <https://www.rfc-editor.org/info/rfc7578>. | ||||
| [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., "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>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
| Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8126>. | ||||
| [RFC8187] Reschke, J., "Indicating Character Encoding and Language | ||||
| for HTTP Header Field Parameters", RFC 8187, | ||||
| DOI 10.17487/RFC8187, September 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8187>. | ||||
| [RFC8288] Nottingham, M., "Web Linking", RFC 8288, | ||||
| DOI 10.17487/RFC8288, October 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8288>. | ||||
| 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 11. | Section 11. | |||
| Accept = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [ | Accept = [ ( "," / ( media-range [ accept-params ] ) ) *( OWS "," [ | |||
| OWS ( media-range [ accept-params ] ) ] ) ] | OWS ( media-range [ accept-params ] ) ] ) ] | |||
| Accept-Charset = *( "," OWS ) ( ( charset / "*" ) [ weight ] ) *( OWS | Accept-Charset = *( "," OWS ) ( ( charset / "*" ) [ weight ] ) *( OWS | |||
| "," [ OWS ( ( charset / "*" ) [ weight ] ) ] ) | "," [ OWS ( ( charset / "*" ) [ weight ] ) ] ) | |||
| Accept-Encoding = [ ( "," / ( codings [ weight ] ) ) *( OWS "," [ OWS | Accept-Encoding = [ ( "," / ( codings [ weight ] ) ) *( OWS "," [ OWS | |||
| skipping to change at page 168, line 41 ¶ | skipping to change at page 168, line 41 ¶ | |||
| / %x53.65.70 ; Sep | / %x53.65.70 ; Sep | |||
| / %x4F.63.74 ; Oct | / %x4F.63.74 ; Oct | |||
| / %x4E.6F.76 ; Nov | / %x4E.6F.76 ; Nov | |||
| / %x44.65.63 ; Dec | / %x44.65.63 ; Dec | |||
| obs-date = rfc850-date / asctime-date | obs-date = rfc850-date / asctime-date | |||
| obs-fold = <obs-fold, see [Messaging], Section 5.2> | obs-fold = <obs-fold, see [Messaging], Section 5.2> | |||
| obs-text = %x80-FF | obs-text = %x80-FF | |||
| opaque-tag = DQUOTE *etagc DQUOTE | opaque-tag = DQUOTE *etagc DQUOTE | |||
| other-content-range = other-range-unit SP other-range-resp | other-content-range = other-range-unit SP other-range-resp | |||
| other-range-resp = *CHAR | other-range-resp = *VCHAR | |||
| other-range-set = 1*VCHAR | other-range-set = 1*VCHAR | |||
| other-range-unit = token | other-range-unit = token | |||
| other-ranges-specifier = other-range-unit "=" other-range-set | other-ranges-specifier = other-range-unit "=" other-range-set | |||
| parameter = token "=" ( token / quoted-string ) | parameter = token "=" ( token / quoted-string ) | |||
| partial-URI = relative-part [ "?" query ] | partial-URI = relative-part [ "?" query ] | |||
| path-abempty = <path-abempty, see [RFC3986], Section 3.3> | path-abempty = <path-abempty, see [RFC3986], Section 3.3> | |||
| port = <port, see [RFC3986], Section 3.2.3> | port = <port, see [RFC3986], Section 3.2.3> | |||
| product = token [ "/" product-version ] | product = token [ "/" product-version ] | |||
| product-version = token | product-version = token | |||
| skipping to change at page 171, line 22 ¶ | skipping to change at page 171, line 22 ¶ | |||
| o Merged entire content of RFC 7233 (Range Requests). | o Merged entire content of RFC 7233 (Range Requests). | |||
| o Merged entire content of RFC 7235 (Auth Framework). | o Merged entire content of RFC 7235 (Auth Framework). | |||
| o Moved all extensibility tips, registration procedures, and | o Moved all extensibility tips, registration procedures, and | |||
| registry tables from the IANA considerations to normative | registry tables from the IANA considerations to normative | |||
| sections, reducing the IANA considerations to just instructions | sections, reducing the IANA considerations to just instructions | |||
| that will be removed prior to publication as an RFC. | that will be removed prior to publication as an RFC. | |||
| G.3. Since draft-ietf-httpbis-semantics-01 | ||||
| o Improve [Welch] citation (<https://github.com/httpwg/http-core/ | ||||
| issues/63>) | ||||
| o Remove HTTP/1.1-ism about Range Requests | ||||
| (<https://github.com/httpwg/http-core/issues/71>) | ||||
| o Cite RFC 8126 instead of RFC 5226 (<https://github.com/httpwg/ | ||||
| http-core/issues/75>) | ||||
| o Cite RFC 7538 instead of RFC 7238 (<https://github.com/httpwg/ | ||||
| http-core/issues/76>) | ||||
| o Cite RFC 8288 instead of RFC 5988 (<https://github.com/httpwg/ | ||||
| http-core/issues/77>) | ||||
| o Cite RFC 8187 instead of RFC 5987 (<https://github.com/httpwg/ | ||||
| http-core/issues/78>) | ||||
| o Cite RFC 7578 instead of RFC 2388 (<https://github.com/httpwg/ | ||||
| http-core/issues/79>) | ||||
| o Cite RFC 7595 instead of RFC 4395 (<https://github.com/httpwg/ | ||||
| http-core/issues/80>) | ||||
| o improve ABNF readability for qdtext (<https://github.com/httpwg/ | ||||
| http-core/issues/81>, <https://www.rfc-editor.org/errata/eid4891>) | ||||
| o Clarify "resource" vs "representation" in definition of status | ||||
| code 416 (<https://github.com/httpwg/http-core/issues/83>, | ||||
| <https://www.rfc-editor.org/errata/eid4664>) | ||||
| o Resolved erratum 4072, no change needed here | ||||
| (<https://github.com/httpwg/http-core/issues/84>, | ||||
| <https://www.rfc-editor.org/errata/eid4072>) | ||||
| o Clarify DELETE status code suggestions | ||||
| (<https://github.com/httpwg/http-core/issues/85>, | ||||
| <https://www.rfc-editor.org/errata/eid4436>) | ||||
| o In Section 6.3.3, fix ABNF for "other-range-resp" to use VCHAR | ||||
| instead of CHAR (<https://github.com/httpwg/http-core/issues/86>, | ||||
| <https://www.rfc-editor.org/errata/eid4707>) | ||||
| o Resolved erratum 5162, no change needed here | ||||
| (<https://github.com/httpwg/http-core/issues/89>, | ||||
| <https://www.rfc-editor.org/errata/eid5162>) | ||||
| o Replace "response code" with "response status code" and "status- | ||||
| code" (the ABNF production name from the HTTP/1.1 message format) | ||||
| by "status code" (<https://github.com/httpwg/http-core/issues/94>, | ||||
| <https://www.rfc-editor.org/errata/eid4050>) | ||||
| o Added a missing word in Section 9.4 (<https://github.com/httpwg/ | ||||
| http-core/issues/98>, <https://www.rfc-editor.org/errata/eid4452>) | ||||
| o In Section 11, fixed an example that had trailing whitespace where | ||||
| it shouldn't (<https://github.com/httpwg/http-core/issues/104>, | ||||
| <https://www.rfc-editor.org/errata/eid4169>) | ||||
| o In Section 9.3.7, remove words that were potentially misleading | ||||
| with respect to the relation to the requested ranges | ||||
| (<https://github.com/httpwg/http-core/issues/102>, | ||||
| <https://www.rfc-editor.org/errata/eid4358>) | ||||
| Index | Index | |||
| 1 | 1 | |||
| 100 Continue (status code) 106 | 100 Continue (status code) 106 | |||
| 100-continue (expect value) 73 | 100-continue (expect value) 74 | |||
| 101 Switching Protocols (status code) 106 | 101 Switching Protocols (status code) 106 | |||
| 1xx Informational (status code class) 106 | 1xx Informational (status code class) 106 | |||
| 2 | 2 | |||
| 200 OK (status code) 107 | 200 OK (status code) 107 | |||
| 201 Created (status code) 108 | 201 Created (status code) 108 | |||
| 202 Accepted (status code) 108 | 202 Accepted (status code) 108 | |||
| 203 Non-Authoritative Information (status code) 108 | 203 Non-Authoritative Information (status code) 108 | |||
| 204 No Content (status code) 109 | 204 No Content (status code) 109 | |||
| 205 Reset Content (status code) 109 | 205 Reset Content (status code) 109 | |||
| skipping to change at page 173, line 29 ¶ | skipping to change at page 174, line 49 ¶ | |||
| D | D | |||
| DELETE method 68 | DELETE method 68 | |||
| Date header field 130 | Date header field 130 | |||
| Delimiters 27 | Delimiters 27 | |||
| deflate (Coding Format) 40 | deflate (Coding Format) 40 | |||
| deflate (content coding) 40 | deflate (content coding) 40 | |||
| downstream 12 | downstream 12 | |||
| E | E | |||
| ETag header field 139 | ETag header field 139 | |||
| Expect header field 73 | Expect header field 74 | |||
| effective request URI 31 | effective request URI 31 | |||
| F | F | |||
| From header field 100 | From header field 100 | |||
| G | G | |||
| GET method 63 | GET method 63 | |||
| Grammar | Grammar | |||
| absolute-path 15 | absolute-path 15 | |||
| absolute-URI 15 | absolute-URI 15 | |||
| skipping to change at page 174, line 43 ¶ | skipping to change at page 176, line 14 ¶ | |||
| date1 129 | date1 129 | |||
| day 129 | day 129 | |||
| day-name 129 | day-name 129 | |||
| day-name-l 129 | day-name-l 129 | |||
| delay-seconds 133 | delay-seconds 133 | |||
| DIGIT 9 | DIGIT 9 | |||
| DQUOTE 9 | DQUOTE 9 | |||
| entity-tag 139 | entity-tag 139 | |||
| ETag 139 | ETag 139 | |||
| etagc 139 | etagc 139 | |||
| Expect 73 | Expect 74 | |||
| field-content 26 | field-content 26 | |||
| field-name 22, 30 | field-name 22, 30 | |||
| field-value 26 | field-value 26 | |||
| field-vchar 26 | field-vchar 26 | |||
| first-byte-pos 43 | first-byte-pos 43 | |||
| fragment 15 | fragment 15 | |||
| From 100 | From 100 | |||
| GMT 129 | GMT 129 | |||
| HEXDIG 9 | HEXDIG 9 | |||
| Host 32 | Host 32 | |||
| skipping to change at page 176, line 51 ¶ | skipping to change at page 178, line 22 ¶ | |||
| H | H | |||
| HEAD method 63 | HEAD method 63 | |||
| Host header field 32 | Host header field 32 | |||
| http URI scheme 16 | http URI scheme 16 | |||
| https URI scheme 17 | https URI scheme 17 | |||
| I | I | |||
| If-Match header field 80 | If-Match header field 80 | |||
| If-Modified-Since header field 82 | If-Modified-Since header field 82 | |||
| If-None-Match header field 81 | If-None-Match header field 81 | |||
| If-Range header field 84 | If-Range header field 85 | |||
| If-Unmodified-Since header field 83 | If-Unmodified-Since header field 83 | |||
| idempotent 62 | idempotent 62 | |||
| inbound 12 | inbound 12 | |||
| interception proxy 13 | interception proxy 13 | |||
| intermediary 11 | intermediary 11 | |||
| L | L | |||
| Last-Modified header field 137 | Last-Modified header field 137 | |||
| Location header field 131 | Location header field 131 | |||
| End of changes. 59 change blocks. | ||||
| 112 lines changed or deleted | 180 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/ | ||||