draft-ietf-httpbis-p1-messaging-15.txt | draft-ietf-httpbis-p1-messaging-16.txt | |||
---|---|---|---|---|
HTTPbis Working Group R. Fielding, Ed. | HTTPbis Working Group R. Fielding, Ed. | |||
Internet-Draft Adobe | Internet-Draft Adobe | |||
Obsoletes: 2145,2616 (if approved) J. Gettys | Obsoletes: 2145,2616 (if approved) J. Gettys | |||
Updates: 2817 (if approved) Alcatel-Lucent | Updates: 2817 (if approved) Alcatel-Lucent | |||
Intended status: Standards Track J. Mogul | Intended status: Standards Track J. Mogul | |||
Expires: January 12, 2012 HP | Expires: February 25, 2012 HP | |||
H. Frystyk | H. Frystyk | |||
Microsoft | Microsoft | |||
L. Masinter | L. Masinter | |||
Adobe | Adobe | |||
P. Leach | P. Leach | |||
Microsoft | Microsoft | |||
T. Berners-Lee | T. Berners-Lee | |||
W3C/MIT | W3C/MIT | |||
Y. Lafon, Ed. | Y. Lafon, Ed. | |||
W3C | W3C | |||
J. Reschke, Ed. | J. Reschke, Ed. | |||
greenbytes | greenbytes | |||
July 11, 2011 | August 24, 2011 | |||
HTTP/1.1, part 1: URIs, Connections, and Message Parsing | HTTP/1.1, part 1: URIs, Connections, and Message Parsing | |||
draft-ietf-httpbis-p1-messaging-15 | draft-ietf-httpbis-p1-messaging-16 | |||
Abstract | Abstract | |||
The Hypertext Transfer Protocol (HTTP) is an application-level | The Hypertext Transfer Protocol (HTTP) is an application-level | |||
protocol for distributed, collaborative, hypertext information | protocol for distributed, collaborative, hypertext information | |||
systems. HTTP has been in use by the World Wide Web global | systems. HTTP has been in use by the World Wide Web global | |||
information initiative since 1990. This document is Part 1 of the | information initiative since 1990. This document is Part 1 of the | |||
seven-part specification that defines the protocol referred to as | seven-part specification that defines the protocol referred to as | |||
"HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 1 provides | "HTTP/1.1" and, taken together, obsoletes RFC 2616 and moves it to | |||
an overview of HTTP and its associated terminology, defines the | historic status, along with its predecessor RFC 2068. | |||
"http" and "https" Uniform Resource Identifier (URI) schemes, defines | ||||
the generic message syntax and parsing requirements for HTTP message | Part 1 provides an overview of HTTP and its associated terminology, | |||
frames, and describes general security concerns for implementations. | defines the "http" and "https" Uniform Resource Identifier (URI) | |||
schemes, defines the generic message syntax and parsing requirements | ||||
for HTTP message frames, and describes general security concerns for | ||||
implementations. | ||||
This part also obsoletes RFCs 2145 (on HTTP version numbers) and 2817 | ||||
(on using CONNECT for TLS upgrades) and moves them to historic | ||||
status. | ||||
Editorial Note (To be removed by RFC Editor) | Editorial Note (To be removed by RFC Editor) | |||
Discussion of this draft should take place on the HTTPBIS working | Discussion of this draft should take place on the HTTPBIS working | |||
group mailing list (ietf-http-wg@w3.org), which is archived at | group mailing list (ietf-http-wg@w3.org), which is archived at | |||
<http://lists.w3.org/Archives/Public/ietf-http-wg/>. | <http://lists.w3.org/Archives/Public/ietf-http-wg/>. | |||
The current issues list is at | The current issues list is at | |||
<http://tools.ietf.org/wg/httpbis/trac/report/3> and related | <http://tools.ietf.org/wg/httpbis/trac/report/3> and related | |||
documents (including fancy diffs) can be found at | documents (including fancy diffs) can be found at | |||
<http://tools.ietf.org/wg/httpbis/>. | <http://tools.ietf.org/wg/httpbis/>. | |||
The changes in this draft are summarized in Appendix D.16. | The changes in this draft are summarized in Appendix C.17. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on January 12, 2012. | This Internet-Draft will expire on February 25, 2012. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2011 IETF Trust and the persons identified as the | Copyright (c) 2011 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 3, line 4 | skipping to change at page 3, line 10 | |||
material may not have granted the IETF Trust the right to allow | material may not have granted the IETF Trust the right to allow | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 7 | 1.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 7 | 1.2. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 7 | |||
1.2.1. ABNF Extension: #rule . . . . . . . . . . . . . . . . 7 | 1.2.1. ABNF Extension: #rule . . . . . . . . . . . . . . . . 7 | |||
1.2.2. Basic Rules . . . . . . . . . . . . . . . . . . . . . 8 | 1.2.2. Basic Rules . . . . . . . . . . . . . . . . . . . . . 8 | |||
2. HTTP-related architecture . . . . . . . . . . . . . . . . . . 10 | 2. HTTP-related architecture . . . . . . . . . . . . . . . . . . 9 | |||
2.1. Client/Server Messaging . . . . . . . . . . . . . . . . . 10 | 2.1. Client/Server Messaging . . . . . . . . . . . . . . . . . 9 | |||
2.2. Message Orientation and Buffering . . . . . . . . . . . . 12 | 2.2. Message Orientation and Buffering . . . . . . . . . . . . 11 | |||
2.3. Connections and Transport Independence . . . . . . . . . . 12 | 2.3. Connections and Transport Independence . . . . . . . . . . 11 | |||
2.4. Intermediaries . . . . . . . . . . . . . . . . . . . . . . 13 | 2.4. Intermediaries . . . . . . . . . . . . . . . . . . . . . . 12 | |||
2.5. Caches . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 2.5. Caches . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | |||
2.6. Protocol Versioning . . . . . . . . . . . . . . . . . . . 15 | 2.6. Protocol Versioning . . . . . . . . . . . . . . . . . . . 15 | |||
2.7. Uniform Resource Identifiers . . . . . . . . . . . . . . . 18 | 2.7. Uniform Resource Identifiers . . . . . . . . . . . . . . . 17 | |||
2.7.1. http URI scheme . . . . . . . . . . . . . . . . . . . 18 | 2.7.1. http URI scheme . . . . . . . . . . . . . . . . . . . 18 | |||
2.7.2. https URI scheme . . . . . . . . . . . . . . . . . . . 20 | 2.7.2. https URI scheme . . . . . . . . . . . . . . . . . . . 19 | |||
2.7.3. http and https URI Normalization and Comparison . . . 20 | 2.7.3. http and https URI Normalization and Comparison . . . 20 | |||
3. Message Format . . . . . . . . . . . . . . . . . . . . . . . . 21 | 3. Message Format . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
3.1. Message Parsing Robustness . . . . . . . . . . . . . . . . 22 | 3.1. Message Parsing and Robustness . . . . . . . . . . . . . . 21 | |||
3.2. Header Fields . . . . . . . . . . . . . . . . . . . . . . 22 | 3.2. Header Fields . . . . . . . . . . . . . . . . . . . . . . 22 | |||
3.2.1. Field Parsing . . . . . . . . . . . . . . . . . . . . 23 | ||||
3.2.2. Field Length . . . . . . . . . . . . . . . . . . . . . 24 | ||||
3.2.3. Common Field ABNF Rules . . . . . . . . . . . . . . . 24 | ||||
3.3. Message Body . . . . . . . . . . . . . . . . . . . . . . . 25 | 3.3. Message Body . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
3.4. General Header Fields . . . . . . . . . . . . . . . . . . 28 | 3.4. Incomplete Messages . . . . . . . . . . . . . . . . . . . 28 | |||
4. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 3.5. General Header Fields . . . . . . . . . . . . . . . . . . 29 | |||
4.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . . 29 | 4. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
4.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . . 29 | 4.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
4.1.2. request-target . . . . . . . . . . . . . . . . . . . . 29 | 4.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
4.2. The Resource Identified by a Request . . . . . . . . . . . 31 | 4.1.2. request-target . . . . . . . . . . . . . . . . . . . . 30 | |||
4.3. Effective Request URI . . . . . . . . . . . . . . . . . . 32 | 4.2. The Resource Identified by a Request . . . . . . . . . . . 32 | |||
5. Response . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | 4.3. Effective Request URI . . . . . . . . . . . . . . . . . . 33 | |||
5.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . . 33 | 5. Response . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
5.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 34 | 5.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . . 34 | |||
6. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 34 | 5.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 35 | |||
6.1. Date/Time Formats: Full Date . . . . . . . . . . . . . . . 34 | 6. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 35 | |||
6.2. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 37 | 6.1. Date/Time Formats: Full Date . . . . . . . . . . . . . . . 35 | |||
6.2.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 38 | 6.2. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 38 | |||
6.2.2. Compression Codings . . . . . . . . . . . . . . . . . 40 | 6.2.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 39 | |||
6.2.3. Transfer Coding Registry . . . . . . . . . . . . . . . 41 | 6.2.2. Compression Codings . . . . . . . . . . . . . . . . . 41 | |||
6.3. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 42 | 6.2.3. Transfer Coding Registry . . . . . . . . . . . . . . . 42 | |||
6.4. Quality Values . . . . . . . . . . . . . . . . . . . . . . 42 | 6.3. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 43 | |||
7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 6.4. Quality Values . . . . . . . . . . . . . . . . . . . . . . 43 | |||
7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 43 | 7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 43 | 7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 44 | |||
7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 43 | 7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 45 | 7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 44 | |||
7.1.4. Practical Considerations . . . . . . . . . . . . . . . 47 | 7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 46 | |||
7.2. Message Transmission Requirements . . . . . . . . . . . . 48 | 7.1.4. Practical Considerations . . . . . . . . . . . . . . . 48 | |||
7.2.1. Persistent Connections and Flow Control . . . . . . . 48 | 7.2. Message Transmission Requirements . . . . . . . . . . . . 49 | |||
7.2.2. Monitoring Connections for Error Status Messages . . . 49 | 7.2.1. Persistent Connections and Flow Control . . . . . . . 49 | |||
7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 49 | 7.2.2. Monitoring Connections for Error Status Messages . . . 50 | |||
7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 50 | ||||
7.2.4. Client Behavior if Server Prematurely Closes | 7.2.4. Client Behavior if Server Prematurely Closes | |||
Connection . . . . . . . . . . . . . . . . . . . . . . 51 | Connection . . . . . . . . . . . . . . . . . . . . . . 52 | |||
8. Miscellaneous notes that might disappear . . . . . . . . . . . 52 | 8. Miscellaneous notes that might disappear . . . . . . . . . . . 53 | |||
8.1. Scheme aliases considered harmful . . . . . . . . . . . . 52 | 8.1. Scheme aliases considered harmful . . . . . . . . . . . . 53 | |||
8.2. Use of HTTP for proxy communication . . . . . . . . . . . 52 | 8.2. Use of HTTP for proxy communication . . . . . . . . . . . 53 | |||
8.3. Interception of HTTP for access control . . . . . . . . . 52 | 8.3. Interception of HTTP for access control . . . . . . . . . 53 | |||
8.4. Use of HTTP by other protocols . . . . . . . . . . . . . . 52 | 8.4. Use of HTTP by other protocols . . . . . . . . . . . . . . 53 | |||
8.5. Use of HTTP by media type specification . . . . . . . . . 52 | 8.5. Use of HTTP by media type specification . . . . . . . . . 53 | |||
9. Header Field Definitions . . . . . . . . . . . . . . . . . . . 52 | 9. Header Field Definitions . . . . . . . . . . . . . . . . . . . 53 | |||
9.1. Connection . . . . . . . . . . . . . . . . . . . . . . . . 52 | 9.1. Connection . . . . . . . . . . . . . . . . . . . . . . . . 53 | |||
9.2. Content-Length . . . . . . . . . . . . . . . . . . . . . . 54 | 9.2. Content-Length . . . . . . . . . . . . . . . . . . . . . . 55 | |||
9.3. Date . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 | 9.3. Date . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 | |||
9.3.1. Clockless Origin Server Operation . . . . . . . . . . 55 | 9.3.1. Clockless Origin Server Operation . . . . . . . . . . 56 | |||
9.4. Host . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 | 9.4. Host . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
9.5. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 | 9.5. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 | |||
9.6. Trailer . . . . . . . . . . . . . . . . . . . . . . . . . 58 | 9.6. Trailer . . . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
9.7. Transfer-Encoding . . . . . . . . . . . . . . . . . . . . 58 | 9.7. Transfer-Encoding . . . . . . . . . . . . . . . . . . . . 59 | |||
9.8. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . 59 | 9.8. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . 60 | |||
9.8.1. Upgrade Token Registry . . . . . . . . . . . . . . . . 60 | 9.8.1. Upgrade Token Registry . . . . . . . . . . . . . . . . 61 | |||
9.9. Via . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 | 9.9. Via . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 | |||
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 62 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 63 | |||
10.1. Header Field Registration . . . . . . . . . . . . . . . . 62 | 10.1. Header Field Registration . . . . . . . . . . . . . . . . 63 | |||
10.2. URI Scheme Registration . . . . . . . . . . . . . . . . . 63 | 10.2. URI Scheme Registration . . . . . . . . . . . . . . . . . 64 | |||
10.3. Internet Media Type Registrations . . . . . . . . . . . . 63 | 10.3. Internet Media Type Registrations . . . . . . . . . . . . 64 | |||
10.3.1. Internet Media Type message/http . . . . . . . . . . . 63 | 10.3.1. Internet Media Type message/http . . . . . . . . . . . 64 | |||
10.3.2. Internet Media Type application/http . . . . . . . . . 64 | 10.3.2. Internet Media Type application/http . . . . . . . . . 66 | |||
10.4. Transfer Coding Registry . . . . . . . . . . . . . . . . . 65 | 10.4. Transfer Coding Registry . . . . . . . . . . . . . . . . . 67 | |||
10.5. Upgrade Token Registration . . . . . . . . . . . . . . . . 66 | 10.5. Upgrade Token Registration . . . . . . . . . . . . . . . . 67 | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 66 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 67 | |||
11.1. Personal Information . . . . . . . . . . . . . . . . . . . 66 | 11.1. Personal Information . . . . . . . . . . . . . . . . . . . 68 | |||
11.2. Abuse of Server Log Information . . . . . . . . . . . . . 67 | 11.2. Abuse of Server Log Information . . . . . . . . . . . . . 68 | |||
11.3. Attacks Based On File and Path Names . . . . . . . . . . . 67 | 11.3. Attacks Based On File and Path Names . . . . . . . . . . . 68 | |||
11.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . . . 67 | 11.4. DNS-related Attacks . . . . . . . . . . . . . . . . . . . 68 | |||
11.5. Proxies and Caching . . . . . . . . . . . . . . . . . . . 68 | 11.5. Proxies and Caching . . . . . . . . . . . . . . . . . . . 69 | |||
11.6. Protocol Element Size Overflows . . . . . . . . . . . . . 69 | 11.6. Protocol Element Size Overflows . . . . . . . . . . . . . 69 | |||
11.7. Denial of Service Attacks on Proxies . . . . . . . . . . . 69 | 11.7. Denial of Service Attacks on Proxies . . . . . . . . . . . 70 | |||
12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 69 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 70 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 70 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 70 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . . 70 | 13.1. Normative References . . . . . . . . . . . . . . . . . . . 70 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . . 72 | 13.2. Informative References . . . . . . . . . . . . . . . . . . 72 | |||
Appendix A. Tolerant Applications . . . . . . . . . . . . . . . . 74 | Appendix A. HTTP Version History . . . . . . . . . . . . . . . . 74 | |||
Appendix B. HTTP Version History . . . . . . . . . . . . . . . . 75 | A.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 75 | |||
B.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 76 | A.1.1. Multi-homed Web Servers . . . . . . . . . . . . . . . 75 | |||
B.1.1. Multi-homed Web Servers . . . . . . . . . . . . . . . 76 | A.1.2. Keep-Alive Connections . . . . . . . . . . . . . . . . 75 | |||
B.1.2. Keep-Alive Connections . . . . . . . . . . . . . . . . 76 | A.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 76 | |||
B.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 77 | Appendix B. Collected ABNF . . . . . . . . . . . . . . . . . . . 77 | |||
Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 78 | Appendix C. Change Log (to be removed by RFC Editor before | |||
Appendix D. Change Log (to be removed by RFC Editor before | publication) . . . . . . . . . . . . . . . . . . . . 81 | |||
publication) . . . . . . . . . . . . . . . . . . . . 82 | C.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 81 | |||
D.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 82 | C.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 81 | |||
D.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 82 | C.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 83 | |||
D.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 84 | C.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 84 | |||
D.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 85 | C.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 84 | |||
D.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 85 | C.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 85 | |||
D.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 86 | C.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 85 | |||
D.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 86 | C.8. Since draft-ietf-httpbis-p1-messaging-06 . . . . . . . . . 86 | |||
D.8. Since draft-ietf-httpbis-p1-messaging-06 . . . . . . . . . 87 | C.9. Since draft-ietf-httpbis-p1-messaging-07 . . . . . . . . . 87 | |||
D.9. Since draft-ietf-httpbis-p1-messaging-07 . . . . . . . . . 88 | C.10. Since draft-ietf-httpbis-p1-messaging-08 . . . . . . . . . 87 | |||
D.10. Since draft-ietf-httpbis-p1-messaging-08 . . . . . . . . . 88 | C.11. Since draft-ietf-httpbis-p1-messaging-09 . . . . . . . . . 88 | |||
D.11. Since draft-ietf-httpbis-p1-messaging-09 . . . . . . . . . 89 | C.12. Since draft-ietf-httpbis-p1-messaging-10 . . . . . . . . . 88 | |||
D.12. Since draft-ietf-httpbis-p1-messaging-10 . . . . . . . . . 89 | C.13. Since draft-ietf-httpbis-p1-messaging-11 . . . . . . . . . 89 | |||
D.13. Since draft-ietf-httpbis-p1-messaging-11 . . . . . . . . . 90 | C.14. Since draft-ietf-httpbis-p1-messaging-12 . . . . . . . . . 89 | |||
D.14. Since draft-ietf-httpbis-p1-messaging-12 . . . . . . . . . 90 | C.15. Since draft-ietf-httpbis-p1-messaging-13 . . . . . . . . . 90 | |||
D.15. Since draft-ietf-httpbis-p1-messaging-13 . . . . . . . . . 91 | C.16. Since draft-ietf-httpbis-p1-messaging-14 . . . . . . . . . 90 | |||
D.16. Since draft-ietf-httpbis-p1-messaging-14 . . . . . . . . . 91 | C.17. Since draft-ietf-httpbis-p1-messaging-15 . . . . . . . . . 90 | |||
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
1. Introduction | 1. Introduction | |||
The Hypertext Transfer Protocol (HTTP) is an application-level | The Hypertext Transfer Protocol (HTTP) is an application-level | |||
request/response protocol that uses extensible semantics and MIME- | request/response protocol that uses extensible semantics and MIME- | |||
like message payloads for flexible interaction with network-based | like message payloads for flexible interaction with network-based | |||
hypertext information systems. HTTP relies upon the Uniform Resource | hypertext information systems. HTTP relies upon the Uniform Resource | |||
Identifier (URI) standard [RFC3986] to indicate the target resource | Identifier (URI) standard [RFC3986] to indicate the target resource | |||
and relationships between resources. Messages are passed in a format | and relationships between resources. Messages are passed in a format | |||
skipping to change at page 8, line 27 | skipping to change at page 8, line 27 | |||
#element => [ ( "," / element ) *( OWS "," [ OWS element ] ) ] | #element => [ ( "," / element ) *( OWS "," [ OWS element ] ) ] | |||
1#element => *( "," OWS ) element *( OWS "," [ OWS element ] ) | 1#element => *( "," OWS ) element *( OWS "," [ OWS element ] ) | |||
Note that empty elements do not contribute to the count of elements | Note that empty elements do not contribute to the count of elements | |||
present, though. | present, though. | |||
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 1.2.2 | example-list-elmt = token ; see Section 3.2.3 | |||
Then these are valid values for example-list (not including the | Then these are valid values for example-list (not including the | |||
double quotes, which are present for delimitation only): | double quotes, which are present for delimitation only): | |||
"foo,bar" | "foo,bar" | |||
" foo ,bar," | " foo ,bar," | |||
" foo , ,bar,charlie " | " foo , ,bar,charlie " | |||
"foo ,bar, charlie " | "foo ,bar, charlie " | |||
But these values would be invalid, as at least one non-empty element | But these values would be invalid, as at least one non-empty element | |||
is required: | is required: | |||
"" | "" | |||
"," | "," | |||
", ," | ", ," | |||
Appendix C shows the collected ABNF, with the list rules expanded as | Appendix B shows the collected ABNF, with the list rules expanded as | |||
explained above. | explained above. | |||
1.2.2. Basic Rules | 1.2.2. Basic Rules | |||
HTTP/1.1 defines the sequence CR LF as the end-of-line marker for all | ||||
protocol elements other than the message-body (see Appendix A for | ||||
tolerant applications). | ||||
This specification uses three rules to denote the use of linear | This specification uses three rules to denote the use of linear | |||
whitespace: OWS (optional whitespace), RWS (required whitespace), and | whitespace: OWS (optional whitespace), RWS (required whitespace), and | |||
BWS ("bad" whitespace). | BWS ("bad" whitespace). | |||
The OWS rule is used where zero or more linear whitespace octets | The OWS rule is used where zero or more linear whitespace octets | |||
might appear. OWS SHOULD either not be produced or be produced as a | might appear. OWS SHOULD either not be produced or be produced as a | |||
single SP. Multiple OWS octets that occur within field-content | single SP. Multiple OWS octets that occur within field-content | |||
SHOULD be replaced with a single SP before interpreting the field | SHOULD either be replaced with a single SP or transformed to all SP | |||
value or forwarding the message downstream. | octets (each WSP octet other than SP replaced with SP) before | |||
interpreting the field value or forwarding the message downstream. | ||||
RWS is used when at least one linear whitespace octet is required to | RWS is used when at least one linear whitespace octet is required to | |||
separate field tokens. RWS SHOULD be produced as a single SP. | separate field tokens. RWS SHOULD be produced as a single SP. | |||
Multiple RWS octets that occur within field-content SHOULD be | Multiple RWS octets octets that occur within field-content SHOULD | |||
replaced with a single SP before interpreting the field value or | either be replaced with a single SP or transformed to all SP octets | |||
forwarding the message downstream. | (each WSP octet other than SP replaced with SP) before interpreting | |||
the field value or forwarding the message downstream. | ||||
BWS is used where the grammar allows optional whitespace for | BWS is used where the grammar allows optional whitespace for | |||
historical reasons but senders SHOULD NOT produce it in messages. | historical reasons but senders SHOULD NOT produce it in messages. | |||
HTTP/1.1 recipients MUST accept such bad optional whitespace and | HTTP/1.1 recipients MUST accept such bad optional whitespace and | |||
remove it before interpreting the field value or forwarding the | remove it before interpreting the field value or forwarding the | |||
message downstream. | message downstream. | |||
OWS = *( [ obs-fold ] WSP ) | OWS = *( [ obs-fold ] WSP ) | |||
; "optional" whitespace | ; "optional" whitespace | |||
RWS = 1*( [ obs-fold ] WSP ) | RWS = 1*( [ obs-fold ] WSP ) | |||
; "required" whitespace | ; "required" whitespace | |||
BWS = OWS | BWS = OWS | |||
; "bad" whitespace | ; "bad" whitespace | |||
obs-fold = CRLF | obs-fold = CRLF | |||
; see Section 3.2 | ; see Section 3.2 | |||
Many HTTP/1.1 header field values consist of words (token or quoted- | ||||
string) separated by whitespace or special characters. These special | ||||
characters MUST be in a quoted string to be used within a parameter | ||||
value (as defined in Section 6.2). | ||||
word = token / quoted-string | ||||
token = 1*tchar | ||||
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" | ||||
/ "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" | ||||
/ DIGIT / ALPHA | ||||
; any VCHAR, except special | ||||
special = "(" / ")" / "<" / ">" / "@" / "," | ||||
/ ";" / ":" / "\" / DQUOTE / "/" / "[" | ||||
/ "]" / "?" / "=" / "{" / "}" | ||||
A string of text is parsed as a single word if it is quoted using | ||||
double-quote marks. | ||||
quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE | ||||
qdtext = OWS / %x21 / %x23-5B / %x5D-7E / obs-text | ||||
; OWS / <VCHAR except DQUOTE and "\"> / obs-text | ||||
obs-text = %x80-FF | ||||
The backslash octet ("\") can be used as a single-octet quoting | ||||
mechanism within quoted-string constructs: | ||||
quoted-pair = "\" ( WSP / VCHAR / obs-text ) | ||||
Senders SHOULD NOT escape octets that do not require escaping (i.e., | ||||
other than DQUOTE and the backslash octet). | ||||
2. HTTP-related architecture | 2. HTTP-related architecture | |||
HTTP was created for the World Wide Web architecture and has evolved | HTTP was created for the World Wide Web architecture and has evolved | |||
over time to support the scalability needs of a worldwide hypertext | over time to support the scalability needs of a worldwide hypertext | |||
system. Much of that architecture is reflected in the terminology | system. Much of that architecture is reflected in the terminology | |||
and syntax productions used to define HTTP. | and syntax productions used to define HTTP. | |||
2.1. Client/Server Messaging | 2.1. Client/Server Messaging | |||
HTTP is a stateless request/response protocol that operates by | HTTP is a stateless request/response protocol that operates by | |||
skipping to change at page 22, line 9 | skipping to change at page 21, line 20 | |||
Implementations MUST NOT send whitespace between the start-line and | Implementations MUST NOT send whitespace between the start-line and | |||
the first header field. The presence of such whitespace in a request | the first header field. The presence of such whitespace in a request | |||
might be an attempt to trick a server into ignoring that field or | might be an attempt to trick a server into ignoring that field or | |||
processing the line after it as a new request, either of which might | processing the line after it as a new request, either of which might | |||
result in a security vulnerability if other implementations within | result in a security vulnerability if other implementations within | |||
the request chain interpret the same message differently. Likewise, | the request chain interpret the same message differently. Likewise, | |||
the presence of such whitespace in a response might be ignored by | the presence of such whitespace in a response might be ignored by | |||
some clients or cause others to cease parsing. | some clients or cause others to cease parsing. | |||
3.1. Message Parsing Robustness | 3.1. Message Parsing and Robustness | |||
In the interest of robustness, servers SHOULD ignore at least one | ||||
empty line received where a Request-Line is expected. In other | ||||
words, if the server is reading the protocol stream at the beginning | ||||
of a message and receives a CRLF first, it SHOULD ignore the CRLF. | ||||
Some old HTTP/1.0 client implementations send an extra CRLF after a | ||||
POST request as a lame workaround for some early server applications | ||||
that failed to read message-body content that was not terminated by a | ||||
line-ending. An HTTP/1.1 client MUST NOT preface or follow a request | ||||
with an extra CRLF. If terminating the request message-body with a | ||||
line-ending is desired, then the client MUST include the terminating | ||||
CRLF octets as part of the message-body length. | ||||
When a server listening only for HTTP request messages, or processing | ||||
what appears from the start-line to be an HTTP request message, | ||||
receives a sequence of octets that does not match the HTTP-message | ||||
grammar aside from the robustness exceptions listed above, the server | ||||
MUST respond with an HTTP/1.1 400 (Bad Request) response. | ||||
The normal procedure for parsing an HTTP message is to read the | The normal procedure for parsing an HTTP message is to read the | |||
start-line into a structure, read each header field into a hash table | start-line into a structure, read each header field into a hash table | |||
by field name until the empty line, and then use the parsed data to | by field name until the empty line, and then use the parsed data to | |||
determine if a message-body is expected. If a message-body has been | determine if a message-body is expected. If a message-body has been | |||
indicated, then it is read as a stream until an amount of octets | indicated, then it is read as a stream until an amount of octets | |||
equal to the message-body length is read or the connection is closed. | equal to the message-body length is read or the connection is closed. | |||
Care must be taken to parse an HTTP message as a sequence of octets | Care must be taken to parse an HTTP message as a sequence of octets | |||
in an encoding that is a superset of US-ASCII. Attempting to parse | in an encoding that is a superset of US-ASCII. Attempting to parse | |||
HTTP as a stream of Unicode characters in a character encoding like | HTTP as a stream of Unicode characters in a character encoding like | |||
UTF-16 might introduce security flaws due to the differing ways that | UTF-16 might introduce security flaws due to the differing ways that | |||
such parsers interpret invalid characters. | such parsers interpret invalid characters. | |||
HTTP allows the set of defined header fields to be extended without | Older HTTP/1.0 client implementations might send an extra CRLF after | |||
changing the protocol version (see Section 10.1). Unrecognized | a POST request as a lame workaround for some early server | |||
header fields MUST be forwarded by a proxy unless the proxy is | applications that failed to read message-body content that was not | |||
specifically configured to block or otherwise transform such fields. | terminated by a line-ending. An HTTP/1.1 client MUST NOT preface or | |||
Unrecognized header fields SHOULD be ignored by other recipients. | follow a request with an extra CRLF. If terminating the request | |||
message-body with a line-ending is desired, then the client MUST | ||||
include the terminating CRLF octets as part of the message-body | ||||
length. | ||||
In the interest of robustness, servers SHOULD ignore at least one | ||||
empty line received where a Request-Line is expected. In other | ||||
words, if the server is reading the protocol stream at the beginning | ||||
of a message and receives a CRLF first, it SHOULD ignore the CRLF. | ||||
Likewise, although the line terminator for the start-line and header | ||||
fields is the sequence CRLF, we recommend that recipients recognize a | ||||
single LF as a line terminator and ignore any CR. | ||||
When a server listening only for HTTP request messages, or processing | ||||
what appears from the start-line to be an HTTP request message, | ||||
receives a sequence of octets that does not match the HTTP-message | ||||
grammar aside from the robustness exceptions listed above, the server | ||||
MUST respond with an HTTP/1.1 400 (Bad Request) response. | ||||
3.2. Header Fields | 3.2. Header Fields | |||
Each HTTP header field consists of a case-insensitive field name | Each HTTP header field consists of a case-insensitive field name | |||
followed by a colon (":"), optional whitespace, and the field value. | followed by a colon (":"), optional whitespace, and the field value. | |||
header-field = field-name ":" OWS [ field-value ] OWS | header-field = field-name ":" OWS [ field-value ] OWS | |||
field-name = token | field-name = token | |||
field-value = *( field-content / OWS ) | field-value = *( field-content / OWS ) | |||
field-content = *( WSP / VCHAR / obs-text ) | field-content = *( WSP / VCHAR / obs-text ) | |||
No whitespace is allowed between the header field name and colon. | The field-name token labels the corresponding field-value as having | |||
For security reasons, any request message received containing such | the semantics defined by that header field. For example, the Date | |||
whitespace MUST be rejected with a response code of 400 (Bad | header field is defined in Section 9.3 as containing the origination | |||
Request). A proxy MUST remove any such whitespace from a response | timestamp for the message in which it appears. | |||
message before forwarding the message downstream. | ||||
A field value MAY be preceded by optional whitespace (OWS); a single | HTTP header fields are fully extensible: there is no limit on the | |||
SP is preferred. The field value does not include any leading or | introduction of new field names, each presumably defining new | |||
trailing white space: OWS occurring before the first non-whitespace | semantics, or on the number of header fields used in a given message. | |||
octet of the field value or after the last non-whitespace octet of | Existing fields are defined in each part of this specification and in | |||
the field value is ignored and SHOULD be removed before further | many other specifications outside the standards process. New header | |||
processing (as this does not change the meaning of the header field). | fields can be introduced without changing the protocol version if | |||
their defined semantics allow them to be safely ignored by recipients | ||||
that do not recognize them. | ||||
New HTTP header fields SHOULD be registered with IANA according to | ||||
the procedures in Section 10.1. Unrecognized header fields MUST be | ||||
forwarded by a proxy unless the field-name is listed in the | ||||
Connection header field (Section 9.1) or the proxy is specifically | ||||
configured to block or otherwise transform such fields. Unrecognized | ||||
header fields SHOULD be ignored by other recipients. | ||||
The order in which header fields with differing field names are | The order in which header fields with differing field names are | |||
received is not significant. However, it is "good practice" to send | received is not significant. However, it is "good practice" to send | |||
header fields that contain control data first, such as Host on | header fields that contain control data first, such as Host on | |||
requests and Date on responses, so that implementations can decide | requests and Date on responses, so that implementations can decide | |||
when not to handle a message as early as possible. A server MUST | when not to handle a message as early as possible. A server MUST | |||
wait until the entire header section is received before interpreting | wait until the entire header section is received before interpreting | |||
a request message, since later header fields might include | a request message, since later header fields might include | |||
conditionals, authentication credentials, or deliberately misleading | conditionals, authentication credentials, or deliberately misleading | |||
duplicate header fields that would impact request processing. | duplicate header fields that would impact request processing. | |||
skipping to change at page 23, line 50 | skipping to change at page 23, line 19 | |||
the same field name are received is therefore significant to the | the same field name are received is therefore significant to the | |||
interpretation of the combined field value; a proxy MUST NOT change | interpretation of the combined field value; a proxy MUST NOT change | |||
the order of these field values when forwarding a message. | the order of these field values when forwarding a message. | |||
Note: The "Set-Cookie" header field as implemented in practice can | Note: The "Set-Cookie" header field as implemented in practice can | |||
occur multiple times, but does not use the list syntax, and thus | occur multiple times, but does not use the list syntax, and thus | |||
cannot be combined into a single line ([RFC6265]). (See Appendix | cannot be combined into a single line ([RFC6265]). (See Appendix | |||
A.2.3 of [Kri2001] for details.) Also note that the Set-Cookie2 | A.2.3 of [Kri2001] for details.) Also note that the Set-Cookie2 | |||
header field specified in [RFC2965] does not share this problem. | header field specified in [RFC2965] does not share this problem. | |||
3.2.1. Field Parsing | ||||
No whitespace is allowed between the header field-name and colon. In | ||||
the past, differences in the handling of such whitespace have led to | ||||
security vulnerabilities in request routing and response handling. | ||||
Any received request message that contains whitespace between a | ||||
header field-name and colon MUST be rejected with a response code of | ||||
400 (Bad Request). A proxy MUST remove any such whitespace from a | ||||
response message before forwarding the message downstream. | ||||
A field value MAY be preceded by optional whitespace (OWS); a single | ||||
SP is preferred. The field value does not include any leading or | ||||
trailing white space: OWS occurring before the first non-whitespace | ||||
octet of the field value or after the last non-whitespace octet of | ||||
the field value is ignored and SHOULD be removed before further | ||||
processing (as this does not change the meaning of the header field). | ||||
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 octet (line folding). This specification | or horizontal tab octet (line folding). This specification | |||
deprecates such line folding except within the message/http media | deprecates such line folding except within the message/http media | |||
type (Section 10.3.1). HTTP/1.1 senders MUST NOT produce messages | type (Section 10.3.1). HTTP senders MUST NOT produce messages that | |||
that include line folding (i.e., that contain any field-content that | include line folding (i.e., that contain any field-content that | |||
matches the obs-fold rule) unless the message is intended for | matches the obs-fold rule) unless the message is intended for | |||
packaging within the message/http media type. HTTP/1.1 recipients | packaging within the message/http media type. HTTP recipients SHOULD | |||
SHOULD accept line folding and replace any embedded obs-fold | accept line folding and replace any embedded obs-fold whitespace with | |||
whitespace with a single SP prior to interpreting the field value or | either a single SP or a matching number of SP octets (to avoid buffer | |||
forwarding the message downstream. | copying) prior to interpreting the field value or forwarding the | |||
message downstream. | ||||
Historically, HTTP has allowed field content with text in the ISO- | Historically, HTTP has allowed field content with text in the ISO- | |||
8859-1 [ISO-8859-1] character encoding and supported other character | 8859-1 [ISO-8859-1] character encoding and supported other character | |||
sets only through use of [RFC2047] encoding. In practice, most HTTP | sets only through use of [RFC2047] encoding. In practice, most HTTP | |||
header field values use only a subset of the US-ASCII character | header field values use only a subset of the US-ASCII character | |||
encoding [USASCII]. Newly defined header fields SHOULD limit their | encoding [USASCII]. Newly defined header fields SHOULD limit their | |||
field values to US-ASCII octets. Recipients SHOULD treat other (obs- | field values to US-ASCII octets. Recipients SHOULD treat other (obs- | |||
text) octets in field content as opaque data. | text) octets in field content as opaque data. | |||
Comments can be included in some HTTP header fields by surrounding | 3.2.2. Field Length | |||
the comment text with parentheses. Comments are only allowed in | ||||
fields containing "comment" as part of their field value definition. | ||||
comment = "(" *( ctext / quoted-cpair / comment ) ")" | ||||
ctext = OWS / %x21-27 / %x2A-5B / %x5D-7E / obs-text | ||||
; OWS / <VCHAR except "(", ")", and "\"> / obs-text | ||||
The backslash octet ("\") can be used as a single-octet quoting | ||||
mechanism within comment constructs: | ||||
quoted-cpair = "\" ( WSP / VCHAR / obs-text ) | ||||
Senders SHOULD NOT escape octets that do not require escaping (i.e., | ||||
other than the backslash octet "\" and the parentheses "(" and ")"). | ||||
HTTP does not place a pre-defined limit on the length of header | HTTP does not place a pre-defined limit on the length of header | |||
fields, either in isolation or as a set. A server MUST be prepared | fields, either in isolation or as a set. A server MUST be prepared | |||
to receive request header fields of unbounded length and respond with | to receive request header fields of unbounded length and respond with | |||
a 4xx status code if the received header field(s) would be longer | a 4xx status code if the received header field(s) would be longer | |||
than the server wishes to handle. | than the server wishes to handle. | |||
A client that receives response headers that are longer than it | A client that receives response headers that are longer than it | |||
wishes to handle can only treat it as a server error. | wishes to handle can only treat it as a server error. | |||
Various ad-hoc limitations on header length are found in practice. | Various ad-hoc limitations on header length are found in practice. | |||
It is RECOMMENDED that all HTTP senders and recipients support | It is RECOMMENDED that all HTTP senders and recipients support | |||
messages whose combined header fields have 4000 or more octets. | messages whose combined header fields have 4000 or more octets. | |||
3.2.3. Common Field ABNF Rules | ||||
Many HTTP/1.1 header field values consist of words (token or quoted- | ||||
string) separated by whitespace or special characters. These special | ||||
characters MUST be in a quoted string to be used within a parameter | ||||
value (as defined in Section 6.2). | ||||
word = token / quoted-string | ||||
token = 1*tchar | ||||
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" | ||||
/ "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" | ||||
/ DIGIT / ALPHA | ||||
; any VCHAR, except special | ||||
special = "(" / ")" / "<" / ">" / "@" / "," | ||||
/ ";" / ":" / "\" / DQUOTE / "/" / "[" | ||||
/ "]" / "?" / "=" / "{" / "}" | ||||
A string of text is parsed as a single word if it is quoted using | ||||
double-quote marks. | ||||
quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE | ||||
qdtext = OWS / %x21 / %x23-5B / %x5D-7E / obs-text | ||||
obs-text = %x80-FF | ||||
The backslash octet ("\") can be used as a single-octet quoting | ||||
mechanism within quoted-string constructs: | ||||
quoted-pair = "\" ( WSP / VCHAR / obs-text ) | ||||
Recipients that process the value of the quoted-string MUST handle a | ||||
quoted-pair as if it were replaced by the octet following the | ||||
backslash. | ||||
Senders SHOULD NOT escape octets in quoted-strings that do not | ||||
require escaping (i.e., other than DQUOTE and the backslash octet). | ||||
Comments can be included in some HTTP header fields by surrounding | ||||
the comment text with parentheses. Comments are only allowed in | ||||
fields containing "comment" as part of their field value definition. | ||||
comment = "(" *( ctext / quoted-cpair / comment ) ")" | ||||
ctext = OWS / %x21-27 / %x2A-5B / %x5D-7E / obs-text | ||||
The backslash octet ("\") can be used as a single-octet quoting | ||||
mechanism within comment constructs: | ||||
quoted-cpair = "\" ( WSP / VCHAR / obs-text ) | ||||
Senders SHOULD NOT escape octets in comments that do not require | ||||
escaping (i.e., other than the backslash octet "\" and the | ||||
parentheses "(" and ")"). | ||||
3.3. Message Body | 3.3. Message Body | |||
The message-body (if any) of an HTTP message is used to carry the | The message-body (if any) of an HTTP message is used to carry the | |||
payload body associated with the request or response. | payload body associated with the request or response. | |||
message-body = *OCTET | message-body = *OCTET | |||
The message-body differs from the payload body only when a transfer- | The message-body differs from the payload body only when a transfer- | |||
coding has been applied, as indicated by the Transfer-Encoding header | coding has been applied, as indicated by the Transfer-Encoding header | |||
field (Section 9.7). If more than one Transfer-Encoding header field | field (Section 9.7). If more than one Transfer-Encoding header field | |||
skipping to change at page 27, line 18 | skipping to change at page 27, line 45 | |||
length in octets. If the actual number of octets sent in the | length in octets. If the actual number of octets sent in the | |||
message is less than the indicated Content-Length, the recipient | message is less than the indicated Content-Length, the recipient | |||
MUST consider the message to be incomplete and treat the | MUST consider the message to be incomplete and treat the | |||
connection as no longer usable. If the actual number of octets | connection as no longer usable. If the actual number of octets | |||
sent in the message is more than the indicated Content-Length, | sent in the message is more than the indicated Content-Length, | |||
the recipient MUST only process the message-body up to the field | the recipient MUST only process the message-body up to the field | |||
value's number of octets; the remainder of the message MUST | value's number of octets; the remainder of the message MUST | |||
either be discarded or treated as the next message in a pipeline. | either be discarded or treated as the next message in a pipeline. | |||
For the sake of robustness, a user-agent MAY attempt to detect | For the sake of robustness, a user-agent MAY attempt to detect | |||
and correct such an error in message framing if it is parsing the | and correct such an error in message framing if it is parsing the | |||
response to the last request on on a connection and the | response to the last request on a connection and the connection | |||
connection has been closed by the server. | has been closed by the server. | |||
5. If this is a request message and none of the above are true, then | 5. If this is a request message and none of the above are true, then | |||
the message-body length is zero (no message-body is present). | the message-body length is zero (no message-body is present). | |||
6. Otherwise, this is a response message without a declared message- | 6. Otherwise, this is a response message without a declared message- | |||
body length, so the message-body length is determined by the | body length, so the message-body length is determined by the | |||
number of octets received prior to the server closing the | number of octets received prior to the server closing the | |||
connection. | connection. | |||
Since there is no way to distinguish a successfully completed, close- | Since there is no way to distinguish a successfully completed, close- | |||
skipping to change at page 28, line 7 | skipping to change at page 28, line 36 | |||
requires a content-length in advance of being called and the server | requires a content-length in advance of being called and the server | |||
is unable or unwilling to buffer the entire request before | is unable or unwilling to buffer the entire request before | |||
processing. | processing. | |||
A client that sends a request containing a message-body MUST include | A client that sends a request containing a message-body MUST include | |||
a valid Content-Length header field if it does not know the server | a valid Content-Length header field if it does not know the server | |||
will handle HTTP/1.1 (or later) requests; such knowledge can be in | will handle HTTP/1.1 (or later) requests; such knowledge can be in | |||
the form of specific user configuration or by remembering the version | the form of specific user configuration or by remembering the version | |||
of a prior received response. | of a prior received response. | |||
3.4. Incomplete Messages | ||||
Request messages that are prematurely terminated, possibly due to a | Request messages that are prematurely terminated, possibly due to a | |||
cancelled connection or a server-imposed time-out exception, MUST | cancelled connection or a server-imposed time-out exception, MUST | |||
result in closure of the connection; sending an HTTP/1.1 error | result in closure of the connection; sending an HTTP/1.1 error | |||
response prior to closing the connection is OPTIONAL. Response | response prior to closing the connection is OPTIONAL. | |||
messages that are prematurely terminated, usually by closure of the | ||||
connection prior to receiving the expected number of octets or by | Response messages that are prematurely terminated, usually by closure | |||
failure to decode a transfer-encoded message-body, MUST be recorded | of the connection prior to receiving the expected number of octets or | |||
as incomplete. A user agent MUST NOT render an incomplete response | by failure to decode a transfer-encoded message-body, MUST be | |||
message-body as if it were complete (i.e., some indication must be | recorded as incomplete. A response that terminates in the middle of | |||
given to the user that an error occurred). Cache requirements for | the header block (before the empty line is received) cannot be | |||
incomplete responses are defined in Section 2.1.1 of [Part6]. | assumed to convey the full semantics of the response and MUST be | |||
treated as an error. | ||||
A message-body that uses the chunked transfer encoding is incomplete | ||||
if the zero-sized chunk that terminates the encoding has not been | ||||
received. A message that uses a valid Content-Length is incomplete | ||||
if the size of the message-body received (in octets) is less than the | ||||
value given by Content-Length. A response that has neither chunked | ||||
transfer encoding nor Content-Length is terminated by closure of the | ||||
connection, and thus is considered complete regardless of the number | ||||
of message-body octets received, provided that the header block was | ||||
received intact. | ||||
A user agent MUST NOT render an incomplete response message-body as | ||||
if it were complete (i.e., some indication must be given to the user | ||||
that an error occurred). Cache requirements for incomplete responses | ||||
are defined in Section 2.1 of [Part6]. | ||||
A server MUST read the entire request message-body or close the | A server MUST read the entire request message-body or close the | |||
connection after sending its response, since otherwise the remaining | connection after sending its response, since otherwise the remaining | |||
data on a persistent connection would be misinterpreted as the next | data on a persistent connection would be misinterpreted as the next | |||
request. Likewise, a client MUST read the entire response message- | request. Likewise, a client MUST read the entire response message- | |||
body if it intends to reuse the same connection for a subsequent | body if it intends to reuse the same connection for a subsequent | |||
request. Pipelining multiple requests on a connection is described | request. Pipelining multiple requests on a connection is described | |||
in Section 7.1.2.2. | in Section 7.1.2.2. | |||
3.4. General Header Fields | 3.5. General Header Fields | |||
There are a few header fields which have general applicability for | There are a few header fields which have general applicability for | |||
both request and response messages, but which do not apply to the | both request and response messages, but which do not apply to the | |||
payload being transferred. These header fields apply only to the | payload being transferred. These header fields apply only to the | |||
message being transmitted. | message being transmitted. | |||
+-------------------+---------------+ | +-------------------+---------------+ | |||
| Header Field Name | Defined in... | | | Header Field Name | Defined in... | | |||
+-------------------+---------------+ | +-------------------+---------------+ | |||
| Connection | Section 9.1 | | | Connection | Section 9.1 | | |||
skipping to change at page 31, line 51 | skipping to change at page 32, line 51 | |||
request. | request. | |||
4.2. The Resource Identified by a Request | 4.2. The Resource Identified by a Request | |||
The exact resource identified by an Internet request is determined by | The exact resource identified by an Internet request is determined by | |||
examining both the request-target and the Host header field. | examining both the request-target and the Host header field. | |||
An origin server that does not allow resources to differ by the | An origin server that does not allow resources to differ by the | |||
requested host MAY ignore the Host header field value when | requested host MAY ignore the Host header field value when | |||
determining the resource identified by an HTTP/1.1 request. (But see | determining the resource identified by an HTTP/1.1 request. (But see | |||
Appendix B.1.1 for other requirements on Host support in HTTP/1.1.) | Appendix A.1.1 for other requirements on Host support in HTTP/1.1.) | |||
An origin server that does differentiate resources based on the host | An origin server that does differentiate resources based on the host | |||
requested (sometimes referred to as virtual hosts or vanity host | requested (sometimes referred to as virtual hosts or vanity host | |||
names) MUST use the following rules for determining the requested | names) MUST use the following rules for determining the requested | |||
resource on an HTTP/1.1 request: | resource on an HTTP/1.1 request: | |||
1. If request-target is an absolute-URI, the host is part of the | 1. If request-target is an absolute-URI, the host is part of the | |||
request-target. Any Host header field value in the request MUST | request-target. Any Host header field value in the request MUST | |||
be ignored. | be ignored. | |||
2. If the request-target is not an absolute-URI, and the request | 2. If the request-target is not an absolute-URI, and the request | |||
skipping to change at page 33, line 27 | skipping to change at page 34, line 27 | |||
GET /pub/WWW/TheProject.html HTTP/1.1 | GET /pub/WWW/TheProject.html HTTP/1.1 | |||
Host: www.example.org:8080 | Host: www.example.org:8080 | |||
(received over an insecure TCP connection) is "http", plus "://", | (received over an insecure TCP connection) is "http", plus "://", | |||
plus the authority component "www.example.org:8080", plus the | plus the authority component "www.example.org:8080", plus the | |||
request-target "/pub/WWW/TheProject.html", thus | request-target "/pub/WWW/TheProject.html", thus | |||
"http://www.example.org:8080/pub/WWW/TheProject.html". | "http://www.example.org:8080/pub/WWW/TheProject.html". | |||
Example 2: the effective request URI for the message | Example 2: the effective request URI for the message | |||
GET * HTTP/1.1 | OPTIONS * HTTP/1.1 | |||
Host: www.example.org | Host: www.example.org | |||
(received over an SSL/TLS secured TCP connection) is "https", plus | (received over an SSL/TLS secured TCP connection) is "https", plus | |||
"://", plus the authority component "www.example.org", thus | "://", plus the authority component "www.example.org", thus | |||
"https://www.example.org". | "https://www.example.org". | |||
Effective request URIs are compared using the rules described in | Effective request URIs are compared using the rules described in | |||
Section 2.7.3, except that empty path components MUST NOT be treated | Section 2.7.3, except that empty path components MUST NOT be treated | |||
as equivalent to an absolute path of "/". | as equivalent to an absolute path of "/". | |||
skipping to change at page 35, line 11 | skipping to change at page 36, line 11 | |||
The other formats are described here only for compatibility with | The other formats are described here only for compatibility with | |||
obsolete implementations. | obsolete implementations. | |||
Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format | Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format | |||
Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format | Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format | |||
HTTP/1.1 clients and servers that parse a date value MUST accept all | HTTP/1.1 clients and servers that parse a date value MUST accept all | |||
three formats (for compatibility with HTTP/1.0), though they MUST | three formats (for compatibility with HTTP/1.0), though they MUST | |||
only generate the RFC 1123 format for representing HTTP-date values | only generate the RFC 1123 format for representing HTTP-date values | |||
in header fields. See Appendix A for further information. | in header fields. | |||
All HTTP date/time stamps MUST be represented in Greenwich Mean Time | All HTTP date/time stamps MUST be represented in Greenwich Mean Time | |||
(GMT), without exception. For the purposes of HTTP, GMT is exactly | (GMT), without exception. For the purposes of HTTP, GMT is exactly | |||
equal to UTC (Coordinated Universal Time). This is indicated in the | equal to UTC (Coordinated Universal Time). This is indicated in the | |||
first two formats by the inclusion of "GMT" as the three-letter | first two formats by the inclusion of "GMT" as the three-letter | |||
abbreviation for time zone, and MUST be assumed when reading the | abbreviation for time zone, and MUST be assumed when reading the | |||
asctime format. HTTP-date is case sensitive and MUST NOT include | asctime format. HTTP-date is case sensitive and MUST NOT include | |||
additional whitespace beyond that specifically included as SP in the | additional whitespace beyond that specifically included as SP in the | |||
grammar. | grammar. | |||
skipping to change at page 44, line 34 | skipping to change at page 45, line 34 | |||
In case the client does not want to maintain a connection for more | In case the client does not want to maintain a connection for more | |||
than that request, it SHOULD send a Connection header field including | than that request, it SHOULD send a Connection header field including | |||
the connection-token close. | the connection-token close. | |||
If either the client or the server sends the close token in the | If either the client or the server sends the close token in the | |||
Connection header field, that request becomes the last one for the | Connection header field, that request becomes the last one for the | |||
connection. | connection. | |||
Clients and servers SHOULD NOT assume that a persistent connection is | Clients and servers SHOULD NOT assume that a persistent connection is | |||
maintained for HTTP versions less than 1.1 unless it is explicitly | maintained for HTTP versions less than 1.1 unless it is explicitly | |||
signaled. See Appendix B.1.2 for more information on backward | signaled. See Appendix A.1.2 for more information on backward | |||
compatibility with HTTP/1.0 clients. | compatibility with HTTP/1.0 clients. | |||
In order to remain persistent, all messages on the connection MUST | In order to remain persistent, all messages on the connection MUST | |||
have a self-defined message length (i.e., one not defined by closure | have a self-defined message length (i.e., one not defined by closure | |||
of the connection), as described in Section 3.3. | of the connection), as described in Section 3.3. | |||
7.1.2.2. Pipelining | 7.1.2.2. Pipelining | |||
A client that supports persistent connections MAY "pipeline" its | A client that supports persistent connections MAY "pipeline" its | |||
requests (i.e., send multiple requests without waiting for each | requests (i.e., send multiple requests without waiting for each | |||
skipping to change at page 51, line 5 | skipping to change at page 52, line 5 | |||
o If a proxy receives a request that includes an Expect header field | o If a proxy receives a request that includes an Expect header field | |||
with the "100-continue" expectation, and the proxy either knows | with the "100-continue" expectation, and the proxy either knows | |||
that the next-hop server complies with HTTP/1.1 or higher, or does | that the next-hop server complies with HTTP/1.1 or higher, or does | |||
not know the HTTP version of the next-hop server, it MUST forward | not know the HTTP version of the next-hop server, it MUST forward | |||
the request, including the Expect header field. | the request, including the Expect header field. | |||
o If the proxy knows that the version of the next-hop server is | o If the proxy knows that the version of the next-hop server is | |||
HTTP/1.0 or lower, it MUST NOT forward the request, and it MUST | HTTP/1.0 or lower, it MUST NOT forward the request, and it MUST | |||
respond with a 417 (Expectation Failed) status code. | respond with a 417 (Expectation Failed) status code. | |||
o Proxies SHOULD maintain a cache recording the HTTP version numbers | o Proxies SHOULD maintain a record of the HTTP version numbers | |||
received from recently-referenced next-hop servers. | received from recently-referenced next-hop servers. | |||
o A proxy MUST NOT forward a 100 (Continue) response if the request | o A proxy MUST NOT forward a 100 (Continue) response if the request | |||
message was received from an HTTP/1.0 (or earlier) client and did | message was received from an HTTP/1.0 (or earlier) client and did | |||
not include an Expect header field with the "100-continue" | not include an Expect header field with the "100-continue" | |||
expectation. This requirement overrides the general rule for | expectation. This requirement overrides the general rule for | |||
forwarding of 1xx responses (see Section 8.1 of [Part2]). | forwarding of 1xx responses (see Section 8.1 of [Part2]). | |||
7.2.4. Client Behavior if Server Prematurely Closes Connection | 7.2.4. Client Behavior if Server Prematurely Closes Connection | |||
skipping to change at page 57, line 7 | skipping to change at page 58, line 7 | |||
Host header field value for redirecting requests to internal servers, | Host header field value for redirecting requests to internal servers, | |||
or for use as a cache key in a shared cache, without first verifying | or for use as a cache key in a shared cache, without first verifying | |||
that the intercepted connection is targeting a valid IP address for | that the intercepted connection is targeting a valid IP address for | |||
that host. | that host. | |||
A server MUST respond with a 400 (Bad Request) status code to any | A server MUST respond with a 400 (Bad Request) status code to any | |||
HTTP/1.1 request message that lacks a Host header field and to any | HTTP/1.1 request message that lacks a Host header field and to any | |||
request message that contains more than one Host header field or a | request message that contains more than one Host header field or a | |||
Host header field with an invalid field-value. | Host header field with an invalid field-value. | |||
See Sections 4.2 and B.1.1 for other requirements relating to Host. | See Sections 4.2 and A.1.1 for other requirements relating to Host. | |||
9.5. TE | 9.5. TE | |||
The "TE" header field indicates what extension transfer-codings it is | The "TE" header field indicates what extension transfer-codings it is | |||
willing to accept in the response, and whether or not it is willing | willing to accept in the response, and whether or not it is willing | |||
to accept trailer fields in a chunked transfer-coding. | to accept trailer fields in a chunked transfer-coding. | |||
Its value consists of the keyword "trailers" and/or a comma-separated | Its value consists of the keyword "trailers" and/or a comma-separated | |||
list of extension transfer-coding names with optional accept | list of extension transfer-coding names with optional accept | |||
parameters (as described in Section 6.2). | parameters (as described in Section 6.2). | |||
skipping to change at page 63, line 19 | skipping to change at page 64, line 19 | |||
| Content-Length | http | standard | Section 9.2 | | | Content-Length | http | standard | Section 9.2 | | |||
| Date | http | standard | Section 9.3 | | | Date | http | standard | Section 9.3 | | |||
| Host | http | standard | Section 9.4 | | | Host | http | standard | Section 9.4 | | |||
| TE | http | standard | Section 9.5 | | | TE | http | standard | Section 9.5 | | |||
| Trailer | http | standard | Section 9.6 | | | Trailer | http | standard | Section 9.6 | | |||
| Transfer-Encoding | http | standard | Section 9.7 | | | Transfer-Encoding | http | standard | Section 9.7 | | |||
| Upgrade | http | standard | Section 9.8 | | | Upgrade | http | standard | Section 9.8 | | |||
| Via | http | standard | Section 9.9 | | | Via | http | standard | Section 9.9 | | |||
+-------------------+----------+----------+-------------+ | +-------------------+----------+----------+-------------+ | |||
Furthermore, the header field name "Close" shall be registered as | ||||
"reserved", as its use as HTTP header field would be in conflict with | ||||
the use of the "close" connection option for the "Connection" header | ||||
field (Section 9.1). | ||||
+-------------------+----------+----------+--------------+ | ||||
| Header Field Name | Protocol | Status | Reference | | ||||
+-------------------+----------+----------+--------------+ | ||||
| Close | http | reserved | Section 10.1 | | ||||
+-------------------+----------+----------+--------------+ | ||||
The change controller is: "IETF (iesg@ietf.org) - Internet | The change controller is: "IETF (iesg@ietf.org) - Internet | |||
Engineering Task Force". | Engineering Task Force". | |||
10.2. URI Scheme Registration | 10.2. URI Scheme Registration | |||
The entries for the "http" and "https" URI Schemes in the registry | The entries for the "http" and "https" URI Schemes in the registry | |||
located at <http://www.iana.org/assignments/uri-schemes.html> shall | located at <http://www.iana.org/assignments/uri-schemes.html> shall | |||
be updated to point to Sections 2.7.1 and 2.7.2 of this document (see | be updated to point to Sections 2.7.1 and 2.7.2 of this document (see | |||
[RFC4395]). | [RFC4395]). | |||
skipping to change at page 67, line 34 | skipping to change at page 68, line 47 | |||
directory level above the current one. On such a system, an HTTP | directory level above the current one. On such a system, an HTTP | |||
server MUST disallow any such construct in the request-target if it | server MUST disallow any such construct in the request-target if it | |||
would otherwise allow access to a resource outside those intended to | would otherwise allow access to a resource outside those intended to | |||
be accessible via the HTTP server. Similarly, files intended for | be accessible via the HTTP server. Similarly, files intended for | |||
reference only internally to the server (such as access control | reference only internally to the server (such as access control | |||
files, configuration files, and script code) MUST be protected from | files, configuration files, and script code) MUST be protected from | |||
inappropriate retrieval, since they might contain sensitive | inappropriate retrieval, since they might contain sensitive | |||
information. Experience has shown that minor bugs in such HTTP | information. Experience has shown that minor bugs in such HTTP | |||
server implementations have turned into security risks. | server implementations have turned into security risks. | |||
11.4. DNS Spoofing | 11.4. DNS-related Attacks | |||
Clients using HTTP rely heavily on the Domain Name Service, and are | ||||
thus generally prone to security attacks based on the deliberate mis- | ||||
association of IP addresses and DNS names. Clients need to be | ||||
cautious in assuming the continuing validity of an IP number/DNS name | ||||
association. | ||||
In particular, HTTP clients SHOULD rely on their name resolver for | ||||
confirmation of an IP number/DNS name association, rather than | ||||
caching the result of previous host name lookups. Many platforms | ||||
already can cache host name lookups locally when appropriate, and | ||||
they SHOULD be configured to do so. It is proper for these lookups | ||||
to be cached, however, only when the TTL (Time To Live) information | ||||
reported by the name server makes it likely that the cached | ||||
information will remain useful. | ||||
If HTTP clients cache the results of host name lookups in order to | ||||
achieve a performance improvement, they MUST observe the TTL | ||||
information reported by DNS. | ||||
If HTTP clients do not observe this rule, they could be spoofed when | ||||
a previously-accessed server's IP address changes. As network | ||||
renumbering is expected to become increasingly common [RFC1900], the | ||||
possibility of this form of attack will grow. Observing this | ||||
requirement thus reduces this potential security vulnerability. | ||||
This requirement also improves the load-balancing behavior of clients | HTTP clients rely heavily on the Domain Name Service (DNS), and are | |||
for replicated servers using the same DNS name and reduces the | thus generally prone to security attacks based on the deliberate | |||
likelihood of a user's experiencing failure in accessing sites which | misassociation of IP addresses and DNS names not protected by DNSSec. | |||
use that strategy. | Clients need to be cautious in assuming the validity of an IP number/ | |||
DNS name association unless the response is protected by DNSSec | ||||
([RFC4033]). | ||||
11.5. Proxies and Caching | 11.5. Proxies and Caching | |||
By their very nature, HTTP proxies are men-in-the-middle, and | By their very nature, HTTP proxies are men-in-the-middle, and | |||
represent an opportunity for man-in-the-middle attacks. Compromise | represent an opportunity for man-in-the-middle attacks. Compromise | |||
of the systems on which the proxies run can result in serious | of the systems on which the proxies run can result in serious | |||
security and privacy problems. Proxies have access to security- | security and privacy problems. Proxies have access to security- | |||
related information, personal information about individual users and | related information, personal information about individual users and | |||
organizations, and proprietary information belonging to users and | organizations, and proprietary information belonging to users and | |||
content providers. A compromised proxy, or a proxy implemented or | content providers. A compromised proxy, or a proxy implemented or | |||
skipping to change at page 69, line 36 | skipping to change at page 70, line 22 | |||
limited by implementations carefully, so as to not impede | limited by implementations carefully, so as to not impede | |||
interoperability. | interoperability. | |||
11.7. Denial of Service Attacks on Proxies | 11.7. Denial of Service Attacks on Proxies | |||
They exist. They are hard to defend against. Research continues. | They exist. They are hard to defend against. Research continues. | |||
Beware. | Beware. | |||
12. Acknowledgments | 12. Acknowledgments | |||
HTTP has evolved considerably over the years. It has benefited from | This document revision builds on the work that went into RFC 2616 and | |||
a large and active developer community -- the many people who have | its predecessors. See Section 16 of [RFC2616] for detailed | |||
participated on the www-talk mailing list -- and it is that community | acknowledgements. | |||
which has been most responsible for the success of HTTP and of the | ||||
World-Wide Web in general. Marc Andreessen, Robert Cailliau, Daniel | ||||
W. Connolly, Bob Denny, John Franks, Jean-Francois Groff, Phillip M. | ||||
Hallam-Baker, Hakon W. Lie, Ari Luotonen, Rob McCool, Lou Montulli, | ||||
Dave Raggett, Tony Sanders, and Marc VanHeyningen deserve special | ||||
recognition for their efforts in defining early aspects of the | ||||
protocol. | ||||
This document has benefited greatly from the comments of all those | ||||
participating in the HTTP-WG. In addition to those already | ||||
mentioned, the following individuals have contributed to this | ||||
specification: | ||||
Gary Adams, Harald Tveit Alvestrand, Keith Ball, Brian Behlendorf, | ||||
Paul Burchard, Maurizio Codogno, Josh Cohen, Mike Cowlishaw, Roman | ||||
Czyborra, Michael A. Dolan, Daniel DuBois, David J. Fiander, Alan | ||||
Freier, Marc Hedlund, Greg Herlihy, Koen Holtman, Alex Hopmann, Bob | ||||
Jernigan, Shel Kaphan, Rohit Khare, John Klensin, Martijn Koster, | ||||
Alexei Kosut, David M. Kristol, Daniel LaLiberte, Ben Laurie, Paul J. | ||||
Leach, Albert Lunde, John C. Mallery, Jean-Philippe Martin-Flatin, | ||||
Mitra, David Morris, Gavin Nicol, Ross Patterson, Bill Perry, Jeffrey | ||||
Perry, Scott Powers, Owen Rees, Luigi Rizzo, David Robinson, Marc | ||||
Salomon, Rich Salz, Allan M. Schiffman, Jim Seidman, Chuck Shotton, | ||||
Eric W. Sink, Simon E. Spero, Richard N. Taylor, Robert S. Thau, Bill | ||||
(BearHeart) Weinman, Francois Yergeau, Mary Ellen Zurko. | ||||
Thanks to the "cave men" of Palo Alto. You know who you are. | ||||
Jim Gettys (the editor of [RFC2616]) wishes particularly to thank Roy | ||||
Fielding, the editor of [RFC2068], along with John Klensin, Jeff | ||||
Mogul, Paul Leach, Dave Kristol, Koen Holtman, John Franks, Josh | ||||
Cohen, Alex Hopmann, Scott Lawrence, and Larry Masinter for their | ||||
help. And thanks go particularly to Jeff Mogul and Scott Lawrence | ||||
for performing the "MUST/MAY/SHOULD" audit. | ||||
The Apache Group, Anselm Baird-Smith, author of Jigsaw, and Henrik | ||||
Frystyk implemented RFC 2068 early, and we wish to thank them for the | ||||
discovery of many of the problems that this document attempts to | ||||
rectify. | ||||
This specification makes heavy use of the augmented BNF and generic | [[todoacks: Insert HTTPbis-specific acknowledgements here.]] | |||
constructs defined by David H. Crocker for [RFC5234]. Similarly, it | ||||
reuses many of the definitions provided by Nathaniel Borenstein and | ||||
Ned Freed for MIME [RFC2045]. We hope that their inclusion in this | ||||
specification will help reduce past confusion over the relationship | ||||
between HTTP and Internet mail message formats. | ||||
13. References | 13. References | |||
13.1. Normative References | 13.1. Normative References | |||
[ISO-8859-1] International Organization for Standardization, | [ISO-8859-1] International Organization for Standardization, | |||
"Information technology -- 8-bit single-byte coded | "Information technology -- 8-bit single-byte coded | |||
graphic character sets -- Part 1: Latin alphabet No. | graphic character sets -- Part 1: Latin alphabet No. | |||
1", ISO/IEC 8859-1:1998, 1998. | 1", ISO/IEC 8859-1:1998, 1998. | |||
[Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | [Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | |||
Ed., and J. Reschke, Ed., "HTTP/1.1, part 2: Message | Ed., and J. Reschke, Ed., "HTTP/1.1, part 2: Message | |||
Semantics", draft-ietf-httpbis-p2-semantics-15 (work in | Semantics", draft-ietf-httpbis-p2-semantics-16 (work in | |||
progress), July 2011. | progress), August 2011. | |||
[Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | [Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | |||
Ed., and J. Reschke, Ed., "HTTP/1.1, part 3: Message | Ed., and J. Reschke, Ed., "HTTP/1.1, part 3: Message | |||
Payload and Content Negotiation", | Payload and Content Negotiation", | |||
draft-ietf-httpbis-p3-payload-15 (work in progress), | draft-ietf-httpbis-p3-payload-16 (work in progress), | |||
July 2011. | August 2011. | |||
[Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | |||
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | |||
Ed., Nottingham, M., Ed., and J. Reschke, Ed., | Ed., Nottingham, M., Ed., and J. Reschke, Ed., | |||
"HTTP/1.1, part 6: Caching", | "HTTP/1.1, part 6: Caching", | |||
draft-ietf-httpbis-p6-cache-15 (work in progress), | draft-ietf-httpbis-p6-cache-16 (work in progress), | |||
July 2011. | August 2011. | |||
[RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data | [RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data | |||
Format Specification version 3.3", RFC 1950, May 1996. | Format Specification version 3.3", RFC 1950, May 1996. | |||
RFC 1950 is an Informational RFC, thus it might be less | RFC 1950 is an Informational RFC, thus it might be less | |||
stable than this specification. On the other hand, | stable than this specification. On the other hand, | |||
this downward reference was present since the | this downward reference was present since the | |||
publication of RFC 2068 in 1997 ([RFC2068]), therefore | publication of RFC 2068 in 1997 ([RFC2068]), therefore | |||
it is unlikely to cause problems in practice. See also | it is unlikely to cause problems in practice. See also | |||
[BCP97]. | [BCP97]. | |||
skipping to change at page 72, line 45 | skipping to change at page 72, line 34 | |||
[Pad1995] Padmanabhan, V. and J. Mogul, "Improving HTTP Latency", | [Pad1995] Padmanabhan, V. and J. Mogul, "Improving HTTP Latency", | |||
Computer Networks and ISDN Systems v. 28, pp. 25-35, | Computer Networks and ISDN Systems v. 28, pp. 25-35, | |||
December 1995, | December 1995, | |||
<http://portal.acm.org/citation.cfm?id=219094>. | <http://portal.acm.org/citation.cfm?id=219094>. | |||
[RFC1123] Braden, R., "Requirements for Internet Hosts - | [RFC1123] Braden, R., "Requirements for Internet Hosts - | |||
Application and Support", STD 3, RFC 1123, | Application and Support", STD 3, RFC 1123, | |||
October 1989. | October 1989. | |||
[RFC1900] Carpenter, B. and Y. Rekhter, "Renumbering Needs Work", | ||||
RFC 1900, February 1996. | ||||
[RFC1919] Chatel, M., "Classical versus Transparent IP Proxies", | [RFC1919] Chatel, M., "Classical versus Transparent IP Proxies", | |||
RFC 1919, March 1996. | RFC 1919, March 1996. | |||
[RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, | [RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, | |||
"Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, | "Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, | |||
May 1996. | May 1996. | |||
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet | [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet | |||
Mail Extensions (MIME) Part One: Format of Internet | Mail Extensions (MIME) Part One: Format of Internet | |||
Message Bodies", RFC 2045, November 1996. | Message Bodies", RFC 2045, November 1996. | |||
skipping to change at page 73, line 42 | skipping to change at page 73, line 29 | |||
Mechanism", RFC 2965, October 2000. | Mechanism", RFC 2965, October 2000. | |||
[RFC3040] Cooper, I., Melve, I., and G. Tomlinson, "Internet Web | [RFC3040] Cooper, I., Melve, I., and G. Tomlinson, "Internet Web | |||
Replication and Caching Taxonomy", RFC 3040, | Replication and Caching Taxonomy", RFC 3040, | |||
January 2001. | January 2001. | |||
[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
Procedures for Message Header Fields", BCP 90, | Procedures for Message Header Fields", BCP 90, | |||
RFC 3864, September 2004. | RFC 3864, September 2004. | |||
[RFC4033] Arends, R., Austein, R., Larson, M., Massey, D., and S. | ||||
Rose, "DNS Security Introduction and Requirements", | ||||
RFC 4033, March 2005. | ||||
[RFC4288] Freed, N. and J. Klensin, "Media Type Specifications | [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications | |||
and Registration Procedures", BCP 13, RFC 4288, | and Registration Procedures", BCP 13, RFC 4288, | |||
December 2005. | December 2005. | |||
[RFC4395] Hansen, T., Hardie, T., and L. Masinter, "Guidelines | [RFC4395] Hansen, T., Hardie, T., and L. Masinter, "Guidelines | |||
and Registration Procedures for New URI Schemes", | and Registration Procedures for New URI Schemes", | |||
BCP 115, RFC 4395, February 2006. | BCP 115, RFC 4395, February 2006. | |||
[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 | |||
skipping to change at page 74, line 25 | skipping to change at page 74, line 15 | |||
[Spe] Spero, S., "Analysis of HTTP Performance Problems", | [Spe] Spero, S., "Analysis of HTTP Performance Problems", | |||
<http://sunsite.unc.edu/mdma-release/http-prob.html>. | <http://sunsite.unc.edu/mdma-release/http-prob.html>. | |||
[Tou1998] Touch, J., Heidemann, J., and K. Obraczka, "Analysis of | [Tou1998] Touch, J., Heidemann, J., and K. Obraczka, "Analysis of | |||
HTTP Performance", ISI Research Report ISI/RR-98-463, | HTTP Performance", ISI Research Report ISI/RR-98-463, | |||
Aug 1998, <http://www.isi.edu/touch/pubs/http-perf96/>. | Aug 1998, <http://www.isi.edu/touch/pubs/http-perf96/>. | |||
(original report dated Aug. 1996) | (original report dated Aug. 1996) | |||
Appendix A. Tolerant Applications | Appendix A. HTTP Version History | |||
Although this document specifies the requirements for the generation | ||||
of HTTP/1.1 messages, not all applications will be correct in their | ||||
implementation. We therefore recommend that operational applications | ||||
be tolerant of deviations whenever those deviations can be | ||||
interpreted unambiguously. | ||||
The line terminator for header fields is the sequence CRLF. However, | ||||
we recommend that applications, when parsing such headers fields, | ||||
recognize a single LF as a line terminator and ignore the leading CR. | ||||
The character encoding of a representation SHOULD be labeled as the | ||||
lowest common denominator of the character codes used within that | ||||
representation, with the exception that not labeling the | ||||
representation is preferred over labeling the representation with the | ||||
labels US-ASCII or ISO-8859-1. See [Part3]. | ||||
Additional rules for requirements on parsing and encoding of dates | ||||
and other potential problems with date encodings include: | ||||
o HTTP/1.1 clients and caches SHOULD assume that an RFC-850 date | ||||
which appears to be more than 50 years in the future is in fact in | ||||
the past (this helps solve the "year 2000" problem). | ||||
o Although all date formats are specified to be case-sensitive, | ||||
recipients SHOULD match day, week and timezone names case- | ||||
insensitively. | ||||
o An HTTP/1.1 implementation MAY internally represent a parsed | ||||
Expires date as earlier than the proper value, but MUST NOT | ||||
internally represent a parsed Expires date as later than the | ||||
proper value. | ||||
o All expiration-related calculations MUST be done in GMT. The | ||||
local time zone MUST NOT influence the calculation or comparison | ||||
of an age or expiration time. | ||||
o If an HTTP header field incorrectly carries a date value with a | ||||
time zone other than GMT, it MUST be converted into GMT using the | ||||
most conservative possible conversion. | ||||
Appendix B. HTTP Version History | ||||
HTTP has been in use by the World-Wide Web global information | HTTP has been in use by the World-Wide Web global information | |||
initiative since 1990. The first version of HTTP, later referred to | initiative since 1990. The first version of HTTP, later referred to | |||
as HTTP/0.9, was a simple protocol for hypertext data transfer across | as HTTP/0.9, was a simple protocol for hypertext data transfer across | |||
the Internet with only a single request method (GET) and no metadata. | the Internet with only a single request method (GET) and no metadata. | |||
HTTP/1.0, as defined by [RFC1945], added a range of request methods | HTTP/1.0, as defined by [RFC1945], added a range of request methods | |||
and MIME-like messaging that could include metadata about the data | and MIME-like messaging that could include metadata about the data | |||
transferred and modifiers on the request/response semantics. | transferred and modifiers on the request/response semantics. | |||
However, HTTP/1.0 did not sufficiently take into consideration the | However, HTTP/1.0 did not sufficiently take into consideration the | |||
effects of hierarchical proxies, caching, the need for persistent | effects of hierarchical proxies, caching, the need for persistent | |||
skipping to change at page 76, line 12 | skipping to change at page 75, line 8 | |||
Since HTTP/0.9 did not support header fields in a request, there is | Since HTTP/0.9 did not support header fields in a request, there is | |||
no mechanism for it to support name-based virtual hosts (selection of | no mechanism for it to support name-based virtual hosts (selection of | |||
resource by inspection of the Host header field). Any server that | resource by inspection of the Host header field). Any server that | |||
implements name-based virtual hosts ought to disable support for | implements name-based virtual hosts ought to disable support for | |||
HTTP/0.9. Most requests that appear to be HTTP/0.9 are, in fact, | HTTP/0.9. Most requests that appear to be HTTP/0.9 are, in fact, | |||
badly constructed HTTP/1.x requests wherein a buggy client failed to | badly constructed HTTP/1.x requests wherein a buggy client failed to | |||
properly encode linear whitespace found in a URI reference and placed | properly encode linear whitespace found in a URI reference and placed | |||
in the request-target. | in the request-target. | |||
B.1. Changes from HTTP/1.0 | A.1. Changes from HTTP/1.0 | |||
This section summarizes major differences between versions HTTP/1.0 | This section summarizes major differences between versions HTTP/1.0 | |||
and HTTP/1.1. | and HTTP/1.1. | |||
B.1.1. Multi-homed Web Servers | A.1.1. Multi-homed Web Servers | |||
The requirements that clients and servers support the Host header | The requirements that clients and servers support the Host header | |||
field (Section 9.4), report an error if it is missing from an | field (Section 9.4), report an error if it is missing from an | |||
HTTP/1.1 request, and accept absolute URIs (Section 4.1.2) are among | HTTP/1.1 request, and accept absolute URIs (Section 4.1.2) are among | |||
the most important changes defined by HTTP/1.1. | the most important changes defined by HTTP/1.1. | |||
Older HTTP/1.0 clients assumed a one-to-one relationship of IP | Older HTTP/1.0 clients assumed a one-to-one relationship of IP | |||
addresses and servers; there was no other established mechanism for | addresses and servers; there was no other established mechanism for | |||
distinguishing the intended server of a request than the IP address | distinguishing the intended server of a request than the IP address | |||
to which that request was directed. The Host header field was | to which that request was directed. The Host header field was | |||
introduced during the development of HTTP/1.1 and, though it was | introduced during the development of HTTP/1.1 and, though it was | |||
quickly implemented by most HTTP/1.0 browsers, additional | quickly implemented by most HTTP/1.0 browsers, additional | |||
requirements were placed on all HTTP/1.1 requests in order to ensure | requirements were placed on all HTTP/1.1 requests in order to ensure | |||
complete adoption. At the time of this writing, most HTTP-based | complete adoption. At the time of this writing, most HTTP-based | |||
services are dependent upon the Host header field for targeting | services are dependent upon the Host header field for targeting | |||
requests. | requests. | |||
B.1.2. Keep-Alive Connections | A.1.2. Keep-Alive Connections | |||
For most implementations of HTTP/1.0, each connection is established | For most implementations of HTTP/1.0, each connection is established | |||
by the client prior to the request and closed by the server after | by the client prior to the request and closed by the server after | |||
sending the response. However, some implementations implement the | sending the response. However, some implementations implement the | |||
Keep-Alive version of persistent connections described in Section | Keep-Alive version of persistent connections described in Section | |||
19.7.1 of [RFC2068]. | 19.7.1 of [RFC2068]. | |||
Some clients and servers might wish to be compatible with some | Some clients and servers might wish to be compatible with some | |||
previous implementations of persistent connections in HTTP/1.0 | previous implementations of persistent connections in HTTP/1.0 | |||
clients and servers. Persistent connections in HTTP/1.0 are | clients and servers. Persistent connections in HTTP/1.0 are | |||
skipping to change at page 77, line 17 | skipping to change at page 76, line 13 | |||
talking to proxies. | talking to proxies. | |||
However, talking to proxies is the most important use of persistent | However, talking to proxies is the most important use of persistent | |||
connections, so that prohibition is clearly unacceptable. Therefore, | connections, so that prohibition is clearly unacceptable. Therefore, | |||
we need some other mechanism for indicating a persistent connection | we need some other mechanism for indicating a persistent connection | |||
is desired, which is safe to use even when talking to an old proxy | is desired, which is safe to use even when talking to an old proxy | |||
that ignores Connection. Persistent connections are the default for | that ignores Connection. Persistent connections are the default for | |||
HTTP/1.1 messages; we introduce a new keyword (Connection: close) for | HTTP/1.1 messages; we introduce a new keyword (Connection: close) for | |||
declaring non-persistence. See Section 9.1. | declaring non-persistence. See Section 9.1. | |||
B.2. Changes from RFC 2616 | A.2. Changes from RFC 2616 | |||
Empty list elements in list productions have been deprecated. | Empty list elements in list productions have been deprecated. | |||
(Section 1.2.1) | (Section 1.2.1) | |||
Rules about implicit linear whitespace between certain grammar | Rules about implicit linear whitespace between certain grammar | |||
productions have been removed; now it's only allowed when | productions have been removed; now it's only allowed when | |||
specifically pointed out in the ABNF. The NUL octet is no longer | specifically pointed out in the ABNF. (Section 1.2.2) | |||
allowed in comment and quoted-string text. The quoted-pair rule no | ||||
longer allows escaping control characters other than HTAB. Non-ASCII | ||||
content in header fields and reason phrase has been obsoleted and | ||||
made opaque (the TEXT rule was removed) (Section 1.2.2) | ||||
Clarify that the string "HTTP" in the HTTP-Version ABFN production is | Clarify that the string "HTTP" in the HTTP-Version ABFN production is | |||
case sensitive. Restrict the version numbers to be single digits due | case sensitive. Restrict the version numbers to be single digits due | |||
to the fact that implementations are known to handle multi-digit | to the fact that implementations are known to handle multi-digit | |||
version numbers incorrectly. (Section 2.6) | version numbers incorrectly. (Section 2.6) | |||
Require that invalid whitespace around field-names be rejected. | Require that invalid whitespace around field-names be rejected. | |||
(Section 3.2) | (Section 3.2) | |||
The NUL octet is no longer allowed in comment and quoted-string text. | ||||
The quoted-pair rule no longer allows escaping control characters | ||||
other than HTAB. Non-ASCII content in header fields and reason | ||||
phrase has been obsoleted and made opaque (the TEXT rule was | ||||
removed). (Section 3.2.3) | ||||
Require recipients to handle bogus Content-Length header fields as | Require recipients to handle bogus Content-Length header fields as | |||
errors. (Section 3.3) | errors. (Section 3.3) | |||
Remove reference to non-existent identity transfer-coding value | Remove reference to non-existent identity transfer-coding value | |||
tokens. (Sections 3.3 and 6.2) | tokens. (Sections 3.3 and 6.2) | |||
Update use of abs_path production from RFC 1808 to the path-absolute | Update use of abs_path production from RFC 1808 to the path-absolute | |||
+ query components of RFC 3986. State that the asterisk form is | + query components of RFC 3986. State that the asterisk form is | |||
allowed for the OPTIONS request method only. (Section 4.1.2) | allowed for the OPTIONS request method only. (Section 4.1.2) | |||
skipping to change at page 78, line 15 | skipping to change at page 77, line 12 | |||
Change ABNF productions for header fields to only define the field | Change ABNF productions for header fields to only define the field | |||
value. (Section 9) | value. (Section 9) | |||
Clarify exactly when close connection options must be sent. | Clarify exactly when close connection options must be sent. | |||
(Section 9.1) | (Section 9.1) | |||
Define the semantics of the "Upgrade" header field in responses other | Define the semantics of the "Upgrade" header field in responses other | |||
than 101 (this was incorporated from [RFC2817]). (Section 9.8) | than 101 (this was incorporated from [RFC2817]). (Section 9.8) | |||
Appendix C. Collected ABNF | Appendix B. Collected ABNF | |||
BWS = OWS | BWS = OWS | |||
Chunked-Body = *chunk last-chunk trailer-part CRLF | Chunked-Body = *chunk last-chunk trailer-part CRLF | |||
Connection = *( "," OWS ) connection-token *( OWS "," [ OWS | Connection = *( "," OWS ) connection-token *( OWS "," [ OWS | |||
connection-token ] ) | connection-token ] ) | |||
Content-Length = 1*DIGIT | Content-Length = 1*DIGIT | |||
Date = HTTP-date | Date = HTTP-date | |||
skipping to change at page 82, line 25 | skipping to change at page 81, line 25 | |||
; Trailer defined but not used | ; Trailer defined but not used | |||
; Transfer-Encoding defined but not used | ; Transfer-Encoding defined but not used | |||
; URI-reference defined but not used | ; URI-reference defined but not used | |||
; Upgrade defined but not used | ; Upgrade defined but not used | |||
; Via defined but not used | ; Via defined but not used | |||
; http-URI defined but not used | ; http-URI defined but not used | |||
; https-URI defined but not used | ; https-URI defined but not used | |||
; partial-URI defined but not used | ; partial-URI defined but not used | |||
; special defined but not used | ; special defined but not used | |||
Appendix D. Change Log (to be removed by RFC Editor before publication) | Appendix C. Change Log (to be removed by RFC Editor before publication) | |||
D.1. Since RFC 2616 | C.1. Since RFC 2616 | |||
Extracted relevant partitions from [RFC2616]. | Extracted relevant partitions from [RFC2616]. | |||
D.2. Since draft-ietf-httpbis-p1-messaging-00 | C.2. Since draft-ietf-httpbis-p1-messaging-00 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/1>: "HTTP Version | o <http://tools.ietf.org/wg/httpbis/trac/ticket/1>: "HTTP Version | |||
should be case sensitive" | should be case sensitive" | |||
(<http://purl.org/NET/http-errata#verscase>) | (<http://purl.org/NET/http-errata#verscase>) | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/2>: "'unsafe' | o <http://tools.ietf.org/wg/httpbis/trac/ticket/2>: "'unsafe' | |||
characters" (<http://purl.org/NET/http-errata#unsafe-uri>) | characters" (<http://purl.org/NET/http-errata#unsafe-uri>) | |||
skipping to change at page 84, line 6 | skipping to change at page 83, line 6 | |||
to-date references" | to-date references" | |||
Other changes: | Other changes: | |||
o Update media type registrations to use RFC4288 template. | o Update media type registrations to use RFC4288 template. | |||
o Use names of RFC4234 core rules DQUOTE and WSP, fix broken ABNF | o Use names of RFC4234 core rules DQUOTE and WSP, fix broken ABNF | |||
for chunk-data (work in progress on | for chunk-data (work in progress on | |||
<http://tools.ietf.org/wg/httpbis/trac/ticket/36>) | <http://tools.ietf.org/wg/httpbis/trac/ticket/36>) | |||
D.3. Since draft-ietf-httpbis-p1-messaging-01 | C.3. Since draft-ietf-httpbis-p1-messaging-01 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/19>: "Bodies on GET | o <http://tools.ietf.org/wg/httpbis/trac/ticket/19>: "Bodies on GET | |||
(and other) requests" | (and other) requests" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/55>: "Updating to | o <http://tools.ietf.org/wg/httpbis/trac/ticket/55>: "Updating to | |||
RFC4288" | RFC4288" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/57>: "Status Code | o <http://tools.ietf.org/wg/httpbis/trac/ticket/57>: "Status Code | |||
skipping to change at page 85, line 5 | skipping to change at page 84, line 5 | |||
o Move "Product Tokens" section (back) into Part 1, as "token" is | o Move "Product Tokens" section (back) into Part 1, as "token" is | |||
used in the definition of the Upgrade header field. | used in the definition of the Upgrade header field. | |||
o Add explicit references to BNF syntax and rules imported from | o Add explicit references to BNF syntax and rules imported from | |||
other parts of the specification. | other parts of the specification. | |||
o Rewrite prose rule "token" in terms of "tchar", rewrite prose rule | o Rewrite prose rule "token" in terms of "tchar", rewrite prose rule | |||
"TEXT". | "TEXT". | |||
D.4. Since draft-ietf-httpbis-p1-messaging-02 | C.4. Since draft-ietf-httpbis-p1-messaging-02 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/51>: "HTTP-date vs. | o <http://tools.ietf.org/wg/httpbis/trac/ticket/51>: "HTTP-date vs. | |||
rfc1123-date" | rfc1123-date" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/64>: "WS in quoted- | o <http://tools.ietf.org/wg/httpbis/trac/ticket/64>: "WS in quoted- | |||
pair" | pair" | |||
Ongoing work on IANA Message Header Field Registration | Ongoing work on IANA Message Header Field Registration | |||
skipping to change at page 85, line 27 | skipping to change at page 84, line 27 | |||
o Reference RFC 3984, and update header field registrations for | o Reference RFC 3984, and update header field registrations for | |||
headers defined in this document. | headers defined in this document. | |||
Ongoing work on ABNF conversion | Ongoing work on ABNF conversion | |||
(<http://tools.ietf.org/wg/httpbis/trac/ticket/36>): | (<http://tools.ietf.org/wg/httpbis/trac/ticket/36>): | |||
o Replace string literals when the string really is case-sensitive | o Replace string literals when the string really is case-sensitive | |||
(HTTP-Version). | (HTTP-Version). | |||
D.5. Since draft-ietf-httpbis-p1-messaging-03 | C.5. Since draft-ietf-httpbis-p1-messaging-03 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/28>: "Connection | o <http://tools.ietf.org/wg/httpbis/trac/ticket/28>: "Connection | |||
closing" | closing" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/97>: "Move | o <http://tools.ietf.org/wg/httpbis/trac/ticket/97>: "Move | |||
registrations and registry information to IANA Considerations" | registrations and registry information to IANA Considerations" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/120>: "need new URL | o <http://tools.ietf.org/wg/httpbis/trac/ticket/120>: "need new URL | |||
skipping to change at page 86, line 11 | skipping to change at page 85, line 11 | |||
Ongoing work on ABNF conversion | Ongoing work on ABNF conversion | |||
(<http://tools.ietf.org/wg/httpbis/trac/ticket/36>): | (<http://tools.ietf.org/wg/httpbis/trac/ticket/36>): | |||
o Replace string literals when the string really is case-sensitive | o Replace string literals when the string really is case-sensitive | |||
(HTTP-Date). | (HTTP-Date). | |||
o Replace HEX by HEXDIG for future consistence with RFC 5234's core | o Replace HEX by HEXDIG for future consistence with RFC 5234's core | |||
rules. | rules. | |||
D.6. Since draft-ietf-httpbis-p1-messaging-04 | C.6. Since draft-ietf-httpbis-p1-messaging-04 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/34>: "Out-of-date | o <http://tools.ietf.org/wg/httpbis/trac/ticket/34>: "Out-of-date | |||
reference for URIs" | reference for URIs" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/132>: "RFC 2822 is | o <http://tools.ietf.org/wg/httpbis/trac/ticket/132>: "RFC 2822 is | |||
updated by RFC 5322" | updated by RFC 5322" | |||
Ongoing work on ABNF conversion | Ongoing work on ABNF conversion | |||
skipping to change at page 86, line 36 | skipping to change at page 85, line 36 | |||
o Get rid of RFC822 dependency; use RFC5234 plus extensions instead. | o Get rid of RFC822 dependency; use RFC5234 plus extensions instead. | |||
o Only reference RFC 5234's core rules. | o Only reference RFC 5234's core rules. | |||
o Introduce new ABNF rules for "bad" whitespace ("BWS"), optional | o Introduce new ABNF rules for "bad" whitespace ("BWS"), optional | |||
whitespace ("OWS") and required whitespace ("RWS"). | whitespace ("OWS") and required whitespace ("RWS"). | |||
o Rewrite ABNFs to spell out whitespace rules, factor out header | o Rewrite ABNFs to spell out whitespace rules, factor out header | |||
field value format definitions. | field value format definitions. | |||
D.7. Since draft-ietf-httpbis-p1-messaging-05 | C.7. Since draft-ietf-httpbis-p1-messaging-05 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/30>: "Header LWS" | o <http://tools.ietf.org/wg/httpbis/trac/ticket/30>: "Header LWS" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/52>: "Sort 1.3 | o <http://tools.ietf.org/wg/httpbis/trac/ticket/52>: "Sort 1.3 | |||
Terminology" | Terminology" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/63>: "RFC2047 | o <http://tools.ietf.org/wg/httpbis/trac/ticket/63>: "RFC2047 | |||
encoded words" | encoded words" | |||
skipping to change at page 87, line 33 | skipping to change at page 86, line 33 | |||
o Add appendix containing collected and expanded ABNF. | o Add appendix containing collected and expanded ABNF. | |||
Other changes: | Other changes: | |||
o Rewrite introduction; add mostly new Architecture Section. | o Rewrite introduction; add mostly new Architecture Section. | |||
o Move definition of quality values from Part 3 into Part 1; make TE | o Move definition of quality values from Part 3 into Part 1; make TE | |||
request header field grammar independent of accept-params (defined | request header field grammar independent of accept-params (defined | |||
in Part 3). | in Part 3). | |||
D.8. Since draft-ietf-httpbis-p1-messaging-06 | C.8. Since draft-ietf-httpbis-p1-messaging-06 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/161>: "base for | o <http://tools.ietf.org/wg/httpbis/trac/ticket/161>: "base for | |||
numeric protocol elements" | numeric protocol elements" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/162>: "comment ABNF" | o <http://tools.ietf.org/wg/httpbis/trac/ticket/162>: "comment ABNF" | |||
Partly resolved issues: | Partly resolved issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/88>: "205 Bodies" | o <http://tools.ietf.org/wg/httpbis/trac/ticket/88>: "205 Bodies" | |||
(took out language that implied that there might be methods for | (took out language that implied that there might be methods for | |||
which a request body MUST NOT be included) | which a request body MUST NOT be included) | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/163>: "editorial | o <http://tools.ietf.org/wg/httpbis/trac/ticket/163>: "editorial | |||
improvements around HTTP-date" | improvements around HTTP-date" | |||
D.9. Since draft-ietf-httpbis-p1-messaging-07 | C.9. Since draft-ietf-httpbis-p1-messaging-07 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/93>: "Repeating | o <http://tools.ietf.org/wg/httpbis/trac/ticket/93>: "Repeating | |||
single-value headers" | single-value headers" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/131>: "increase | o <http://tools.ietf.org/wg/httpbis/trac/ticket/131>: "increase | |||
connection limit" | connection limit" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/157>: "IP addresses | o <http://tools.ietf.org/wg/httpbis/trac/ticket/157>: "IP addresses | |||
skipping to change at page 88, line 42 | skipping to change at page 87, line 42 | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/194>: "disallow | o <http://tools.ietf.org/wg/httpbis/trac/ticket/194>: "disallow | |||
control characters in quoted-pair" | control characters in quoted-pair" | |||
Partly resolved issues: | Partly resolved issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/148>: "update IANA | o <http://tools.ietf.org/wg/httpbis/trac/ticket/148>: "update IANA | |||
requirements wrt Transfer-Coding values" (add the IANA | requirements wrt Transfer-Coding values" (add the IANA | |||
Considerations subsection) | Considerations subsection) | |||
D.10. Since draft-ietf-httpbis-p1-messaging-08 | C.10. Since draft-ietf-httpbis-p1-messaging-08 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/201>: "header | o <http://tools.ietf.org/wg/httpbis/trac/ticket/201>: "header | |||
parsing, treatment of leading and trailing OWS" | parsing, treatment of leading and trailing OWS" | |||
Partly resolved issues: | Partly resolved issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/60>: "Placement of | o <http://tools.ietf.org/wg/httpbis/trac/ticket/60>: "Placement of | |||
13.5.1 and 13.5.2" | 13.5.1 and 13.5.2" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/200>: "use of term | o <http://tools.ietf.org/wg/httpbis/trac/ticket/200>: "use of term | |||
"word" when talking about header structure" | "word" when talking about header structure" | |||
D.11. Since draft-ietf-httpbis-p1-messaging-09 | C.11. Since draft-ietf-httpbis-p1-messaging-09 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/73>: "Clarification | o <http://tools.ietf.org/wg/httpbis/trac/ticket/73>: "Clarification | |||
of the term 'deflate'" | of the term 'deflate'" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/83>: "OPTIONS * and | o <http://tools.ietf.org/wg/httpbis/trac/ticket/83>: "OPTIONS * and | |||
proxies" | proxies" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/122>: "MIME-Version | o <http://tools.ietf.org/wg/httpbis/trac/ticket/122>: "MIME-Version | |||
skipping to change at page 89, line 35 | skipping to change at page 88, line 35 | |||
sensitivity of HTTP-date" | sensitivity of HTTP-date" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/200>: "use of term | o <http://tools.ietf.org/wg/httpbis/trac/ticket/200>: "use of term | |||
"word" when talking about header structure" | "word" when talking about header structure" | |||
Partly resolved issues: | Partly resolved issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/196>: "Term for the | o <http://tools.ietf.org/wg/httpbis/trac/ticket/196>: "Term for the | |||
requested resource's URI" | requested resource's URI" | |||
D.12. Since draft-ietf-httpbis-p1-messaging-10 | C.12. Since draft-ietf-httpbis-p1-messaging-10 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/28>: "Connection | o <http://tools.ietf.org/wg/httpbis/trac/ticket/28>: "Connection | |||
Closing" | Closing" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/90>: "Delimiting | o <http://tools.ietf.org/wg/httpbis/trac/ticket/90>: "Delimiting | |||
messages with multipart/byteranges" | messages with multipart/byteranges" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/95>: "Handling | o <http://tools.ietf.org/wg/httpbis/trac/ticket/95>: "Handling | |||
skipping to change at page 90, line 10 | skipping to change at page 89, line 10 | |||
entity / representation / variant terminology" | entity / representation / variant terminology" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/220>: "consider | o <http://tools.ietf.org/wg/httpbis/trac/ticket/220>: "consider | |||
removing the 'changes from 2068' sections" | removing the 'changes from 2068' sections" | |||
Partly resolved issues: | Partly resolved issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/159>: "HTTP(s) URI | o <http://tools.ietf.org/wg/httpbis/trac/ticket/159>: "HTTP(s) URI | |||
scheme definitions" | scheme definitions" | |||
D.13. Since draft-ietf-httpbis-p1-messaging-11 | C.13. Since draft-ietf-httpbis-p1-messaging-11 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/193>: "Trailer | o <http://tools.ietf.org/wg/httpbis/trac/ticket/193>: "Trailer | |||
requirements" | requirements" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/204>: "Text about | o <http://tools.ietf.org/wg/httpbis/trac/ticket/204>: "Text about | |||
clock requirement for caches belongs in p6" | clock requirement for caches belongs in p6" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/221>: "effective | o <http://tools.ietf.org/wg/httpbis/trac/ticket/221>: "effective | |||
request URI: handling of missing host in HTTP/1.0" | request URI: handling of missing host in HTTP/1.0" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/248>: "confusing | o <http://tools.ietf.org/wg/httpbis/trac/ticket/248>: "confusing | |||
Date requirements for clients" | Date requirements for clients" | |||
Partly resolved issues: | Partly resolved issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/95>: "Handling | o <http://tools.ietf.org/wg/httpbis/trac/ticket/95>: "Handling | |||
multiple Content-Length headers" | multiple Content-Length headers" | |||
D.14. Since draft-ietf-httpbis-p1-messaging-12 | C.14. Since draft-ietf-httpbis-p1-messaging-12 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/75>: "RFC2145 | o <http://tools.ietf.org/wg/httpbis/trac/ticket/75>: "RFC2145 | |||
Normative" | Normative" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/159>: "HTTP(s) URI | o <http://tools.ietf.org/wg/httpbis/trac/ticket/159>: "HTTP(s) URI | |||
scheme definitions" (tune the requirements on userinfo) | scheme definitions" (tune the requirements on userinfo) | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/210>: "define | o <http://tools.ietf.org/wg/httpbis/trac/ticket/210>: "define | |||
skipping to change at page 91, line 11 | skipping to change at page 90, line 11 | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/240>: "Migrate | o <http://tools.ietf.org/wg/httpbis/trac/ticket/240>: "Migrate | |||
Upgrade details from RFC2817" | Upgrade details from RFC2817" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/276>: "untangle | o <http://tools.ietf.org/wg/httpbis/trac/ticket/276>: "untangle | |||
ABNFs for header fields" | ABNFs for header fields" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/279>: "update RFC | o <http://tools.ietf.org/wg/httpbis/trac/ticket/279>: "update RFC | |||
2109 reference" | 2109 reference" | |||
D.15. Since draft-ietf-httpbis-p1-messaging-13 | C.15. Since draft-ietf-httpbis-p1-messaging-13 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/53>: "Allow is not | o <http://tools.ietf.org/wg/httpbis/trac/ticket/53>: "Allow is not | |||
in 13.5.2" | in 13.5.2" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/95>: "Handling | ||||
multiple Content-Length headers" | ||||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/276>: "untangle | o <http://tools.ietf.org/wg/httpbis/trac/ticket/276>: "untangle | |||
ABNFs for header fields" | ABNFs for header fields" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/286>: "Content- | o <http://tools.ietf.org/wg/httpbis/trac/ticket/286>: "Content- | |||
Length ABNF broken" | Length ABNF broken" | |||
D.16. Since draft-ietf-httpbis-p1-messaging-14 | C.16. Since draft-ietf-httpbis-p1-messaging-14 | |||
Closed issues: | Closed issues: | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/273>: "HTTP-Version | o <http://tools.ietf.org/wg/httpbis/trac/ticket/273>: "HTTP-Version | |||
should be redefined as fixed length pair of DIGIT . DIGIT" | should be redefined as fixed length pair of DIGIT . DIGIT" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/282>: "Recommend | o <http://tools.ietf.org/wg/httpbis/trac/ticket/282>: "Recommend | |||
minimum sizes for protocol elements" | minimum sizes for protocol elements" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/283>: "Set | o <http://tools.ietf.org/wg/httpbis/trac/ticket/283>: "Set | |||
expectations around buffering" | expectations around buffering" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/288>: "Considering | o <http://tools.ietf.org/wg/httpbis/trac/ticket/288>: "Considering | |||
messages in isolation" | messages in isolation" | |||
C.17. Since draft-ietf-httpbis-p1-messaging-15 | ||||
Closed issues: | ||||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/100>: "DNS Spoofing | ||||
/ DNS Binding advice" | ||||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/254>: "move RFCs | ||||
2145, 2616, 2817 to Historic status" | ||||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/270>: "\-escaping in | ||||
quoted strings" | ||||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/305>: "'Close' | ||||
should be reserved in the HTTP header field registry" | ||||
Index | Index | |||
A | A | |||
absolute-URI form (of request-target) 29 | absolute-URI form (of request-target) 30 | |||
accelerator 14 | accelerator 13 | |||
application/http Media Type 64 | application/http Media Type 66 | |||
asterisk form (of request-target) 29 | asterisk form (of request-target) 30 | |||
authority form (of request-target) 30 | authority form (of request-target) 31 | |||
B | B | |||
browser 10 | browser 9 | |||
C | C | |||
cache 15 | cache 14 | |||
cacheable 15 | cacheable 14 | |||
captive portal 14 | captive portal 14 | |||
chunked (Coding Format) 38 | chunked (Coding Format) 39 | |||
client 10 | client 9 | |||
Coding Format | Coding Format | |||
chunked 38 | chunked 39 | |||
compress 41 | compress 42 | |||
deflate 41 | deflate 42 | |||
gzip 41 | gzip 42 | |||
compress (Coding Format) 41 | compress (Coding Format) 42 | |||
connection 10 | connection 9 | |||
Connection header field 52 | Connection header field 53 | |||
Content-Length header field 54 | Content-Length header field 55 | |||
D | D | |||
Date header field 54 | Date header field 55 | |||
deflate (Coding Format) 41 | deflate (Coding Format) 42 | |||
downstream 13 | downstream 12 | |||
E | E | |||
effective request URI 32 | effective request URI 33 | |||
G | G | |||
gateway 14 | gateway 13 | |||
Grammar | Grammar | |||
absolute-URI 18 | absolute-URI 17 | |||
ALPHA 7 | ALPHA 7 | |||
asctime-date 37 | asctime-date 38 | |||
attribute 37 | attribute 38 | |||
authority 18 | authority 17 | |||
BWS 9 | BWS 9 | |||
chunk 38 | chunk 39 | |||
chunk-data 38 | chunk-data 39 | |||
chunk-ext 38 | chunk-ext 39 | |||
chunk-ext-name 38 | chunk-ext-name 39 | |||
chunk-ext-val 38 | chunk-ext-val 39 | |||
chunk-size 38 | chunk-size 39 | |||
Chunked-Body 38 | Chunked-Body 39 | |||
comment 24 | comment 25 | |||
Connection 53 | Connection 54 | |||
connection-token 53 | connection-token 54 | |||
Content-Length 54 | Content-Length 55 | |||
CR 7 | CR 7 | |||
CRLF 7 | CRLF 7 | |||
ctext 24 | ctext 25 | |||
CTL 7 | CTL 7 | |||
Date 54 | Date 55 | |||
date1 36 | date1 37 | |||
date2 37 | date2 38 | |||
date3 37 | date3 38 | |||
day 36 | day 37 | |||
day-name 36 | day-name 37 | |||
day-name-l 36 | day-name-l 37 | |||
DIGIT 7 | DIGIT 7 | |||
DQUOTE 7 | DQUOTE 7 | |||
field-content 23 | field-content 22 | |||
field-name 23 | field-name 22 | |||
field-value 23 | field-value 22 | |||
GMT 36 | GMT 37 | |||
header-field 23 | header-field 22 | |||
HEXDIG 7 | HEXDIG 7 | |||
Host 56 | Host 57 | |||
hour 36 | hour 37 | |||
HTTP-date 35 | HTTP-date 36 | |||
HTTP-message 21 | HTTP-message 21 | |||
HTTP-Prot-Name 16 | HTTP-Prot-Name 15 | |||
http-URI 18 | http-URI 18 | |||
HTTP-Version 16 | HTTP-Version 15 | |||
https-URI 20 | https-URI 19 | |||
last-chunk 38 | last-chunk 39 | |||
LF 7 | LF 7 | |||
message-body 25 | message-body 25 | |||
Method 29 | Method 30 | |||
minute 36 | minute 37 | |||
month 36 | month 37 | |||
obs-date 36 | obs-date 37 | |||
obs-text 10 | obs-text 24 | |||
OCTET 7 | OCTET 7 | |||
OWS 9 | OWS 9 | |||
path-absolute 18 | path-absolute 17 | |||
port 18 | port 17 | |||
product 42 | product 43 | |||
product-version 42 | product-version 43 | |||
protocol-name 61 | protocol-name 62 | |||
protocol-version 61 | protocol-version 62 | |||
pseudonym 61 | pseudonym 62 | |||
qdtext 10 | qdtext 24 | |||
qdtext-nf 38 | qdtext-nf 39 | |||
query 18 | query 17 | |||
quoted-cpair 24 | quoted-cpair 25 | |||
quoted-pair 10 | quoted-pair 25 | |||
quoted-str-nf 38 | quoted-str-nf 39 | |||
quoted-string 10 | quoted-string 24 | |||
qvalue 42 | qvalue 43 | |||
Reason-Phrase 34 | Reason-Phrase 35 | |||
received-by 61 | received-by 62 | |||
received-protocol 61 | received-protocol 62 | |||
Request 29 | Request 29 | |||
Request-Line 29 | Request-Line 30 | |||
request-target 29 | request-target 30 | |||
Response 33 | Response 34 | |||
rfc850-date 37 | rfc850-date 38 | |||
rfc1123-date 36 | rfc1123-date 37 | |||
RWS 9 | RWS 9 | |||
second 36 | second 37 | |||
SP 7 | SP 7 | |||
special 9 | special 24 | |||
Status-Code 34 | Status-Code 35 | |||
Status-Line 34 | Status-Line 35 | |||
t-codings 57 | t-codings 58 | |||
tchar 9 | tchar 24 | |||
TE 57 | TE 58 | |||
te-ext 57 | te-ext 58 | |||
te-params 57 | te-params 58 | |||
time-of-day 36 | time-of-day 37 | |||
token 9 | token 24 | |||
Trailer 58 | Trailer 59 | |||
trailer-part 38 | trailer-part 39 | |||
transfer-coding 37 | transfer-coding 38 | |||
Transfer-Encoding 59 | Transfer-Encoding 60 | |||
transfer-extension 37 | transfer-extension 38 | |||
transfer-parameter 37 | transfer-parameter 38 | |||
Upgrade 59 | Upgrade 60 | |||
uri-host 18 | uri-host 17 | |||
URI-reference 18 | URI-reference 17 | |||
value 37 | value 38 | |||
VCHAR 7 | VCHAR 7 | |||
Via 61 | Via 62 | |||
word 9 | word 24 | |||
WSP 7 | WSP 7 | |||
year 36 | year 37 | |||
gzip (Coding Format) 41 | gzip (Coding Format) 42 | |||
H | H | |||
header field 21 | header field 20 | |||
Header Fields | Header Fields | |||
Connection 52 | Connection 53 | |||
Content-Length 54 | Content-Length 55 | |||
Date 54 | Date 55 | |||
Host 56 | Host 57 | |||
TE 57 | TE 58 | |||
Trailer 58 | Trailer 59 | |||
Transfer-Encoding 58 | Transfer-Encoding 59 | |||
Upgrade 59 | Upgrade 60 | |||
Via 61 | Via 62 | |||
header section 21 | header section 20 | |||
headers 21 | headers 20 | |||
Host header field 56 | Host header field 57 | |||
http URI scheme 18 | http URI scheme 18 | |||
https URI scheme 20 | https URI scheme 19 | |||
I | I | |||
inbound 13 | inbound 12 | |||
interception proxy 14 | interception proxy 14 | |||
intermediary 13 | intermediary 12 | |||
M | M | |||
Media Type | Media Type | |||
application/http 64 | application/http 66 | |||
message/http 63 | message/http 64 | |||
message 11 | message 10 | |||
message/http Media Type 63 | message/http Media Type 64 | |||
N | N | |||
non-transforming proxy 13 | non-transforming proxy 13 | |||
O | O | |||
origin form (of request-target) 30 | origin form (of request-target) 31 | |||
origin server 10 | origin server 9 | |||
outbound 13 | outbound 12 | |||
P | P | |||
proxy 13 | proxy 12 | |||
R | R | |||
recipient 10 | recipient 9 | |||
request 11 | request 10 | |||
resource 18 | resource 17 | |||
response 11 | response 10 | |||
reverse proxy 14 | reverse proxy 13 | |||
S | S | |||
sender 10 | sender 9 | |||
server 10 | server 9 | |||
spider 10 | spider 9 | |||
T | T | |||
target resource 32 | target resource 33 | |||
TE header field 57 | TE header field 58 | |||
Trailer header field 58 | Trailer header field 59 | |||
Transfer-Encoding header field 58 | Transfer-Encoding header field 59 | |||
transforming proxy 13 | transforming proxy 13 | |||
transparent proxy 14 | transparent proxy 14 | |||
tunnel 14 | tunnel 13 | |||
U | U | |||
Upgrade header field 59 | Upgrade header field 60 | |||
upstream 13 | upstream 12 | |||
URI scheme | URI scheme | |||
http 18 | http 18 | |||
https 20 | https 19 | |||
user agent 10 | user agent 9 | |||
V | V | |||
Via header field 61 | Via header field 62 | |||
Authors' Addresses | Authors' Addresses | |||
Roy T. Fielding (editor) | Roy T. Fielding (editor) | |||
Adobe Systems Incorporated | Adobe Systems Incorporated | |||
345 Park Ave | 345 Park Ave | |||
San Jose, CA 95110 | San Jose, CA 95110 | |||
USA | USA | |||
EMail: fielding@gbiv.com | EMail: fielding@gbiv.com | |||
End of changes. 118 change blocks. | ||||
537 lines changed or deleted | 521 lines changed or added | |||
This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |