| draft-ietf-httpbis-p1-messaging-14.txt | draft-ietf-httpbis-p1-messaging-15.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: October 20, 2011 HP | Expires: January 12, 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 | |||
| April 18, 2011 | July 11, 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-14 | draft-ietf-httpbis-p1-messaging-15 | |||
| 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. Part 1 provides | |||
| an overview of HTTP and its associated terminology, defines the | an overview of HTTP and its associated terminology, defines the | |||
| skipping to change at page 2, line 5 | skipping to change at page 2, line 5 | |||
| 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.15. | The changes in this draft are summarized in Appendix D.16. | |||
| 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 October 20, 2011. | This Internet-Draft will expire on January 12, 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 11 | skipping to change at page 3, line 11 | |||
| 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 . . . . . . . . . . . . . . . . . . 10 | |||
| 2.1. Client/Server Messaging . . . . . . . . . . . . . . . . . 10 | 2.1. Client/Server Messaging . . . . . . . . . . . . . . . . . 10 | |||
| 2.2. Connections and Transport Independence . . . . . . . . . . 12 | 2.2. Message Orientation and Buffering . . . . . . . . . . . . 12 | |||
| 2.3. Intermediaries . . . . . . . . . . . . . . . . . . . . . . 12 | 2.3. Connections and Transport Independence . . . . . . . . . . 12 | |||
| 2.4. Caches . . . . . . . . . . . . . . . . . . . . . . . . . . 14 | 2.4. Intermediaries . . . . . . . . . . . . . . . . . . . . . . 13 | |||
| 2.5. Protocol Versioning . . . . . . . . . . . . . . . . . . . 15 | 2.5. Caches . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 2.6. Uniform Resource Identifiers . . . . . . . . . . . . . . . 17 | 2.6. Protocol Versioning . . . . . . . . . . . . . . . . . . . 15 | |||
| 2.6.1. http URI scheme . . . . . . . . . . . . . . . . . . . 18 | 2.7. Uniform Resource Identifiers . . . . . . . . . . . . . . . 18 | |||
| 2.6.2. https URI scheme . . . . . . . . . . . . . . . . . . . 19 | 2.7.1. http URI scheme . . . . . . . . . . . . . . . . . . . 18 | |||
| 2.6.3. http and https URI Normalization and Comparison . . . 20 | 2.7.2. https URI scheme . . . . . . . . . . . . . . . . . . . 20 | |||
| 3. Message Format . . . . . . . . . . . . . . . . . . . . . . . . 20 | 2.7.3. http and https URI Normalization and Comparison . . . 20 | |||
| 3.1. Message Parsing Robustness . . . . . . . . . . . . . . . . 21 | 3. Message Format . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 3.1. Message Parsing Robustness . . . . . . . . . . . . . . . . 22 | ||||
| 3.2. Header Fields . . . . . . . . . . . . . . . . . . . . . . 22 | 3.2. Header Fields . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 3.3. Message Body . . . . . . . . . . . . . . . . . . . . . . . 24 | 3.3. Message Body . . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 3.4. General Header Fields . . . . . . . . . . . . . . . . . . 27 | 3.4. General Header Fields . . . . . . . . . . . . . . . . . . 28 | |||
| 4. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 4. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 | |||
| 4.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . . 28 | 4.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 4.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . . 28 | 4.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 4.1.2. request-target . . . . . . . . . . . . . . . . . . . . 28 | 4.1.2. request-target . . . . . . . . . . . . . . . . . . . . 29 | |||
| 4.2. The Resource Identified by a Request . . . . . . . . . . . 30 | 4.2. The Resource Identified by a Request . . . . . . . . . . . 31 | |||
| 4.3. Effective Request URI . . . . . . . . . . . . . . . . . . 31 | 4.3. Effective Request URI . . . . . . . . . . . . . . . . . . 32 | |||
| 5. Response . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 | 5. Response . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 5.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . . 33 | 5.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 5.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 33 | 5.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 34 | |||
| 6. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 33 | 6. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 34 | |||
| 6.1. Date/Time Formats: Full Date . . . . . . . . . . . . . . . 33 | 6.1. Date/Time Formats: Full Date . . . . . . . . . . . . . . . 34 | |||
| 6.2. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 36 | 6.2. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 37 | |||
| 6.2.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 37 | 6.2.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 38 | |||
| 6.2.2. Compression Codings . . . . . . . . . . . . . . . . . 39 | 6.2.2. Compression Codings . . . . . . . . . . . . . . . . . 40 | |||
| 6.2.3. Transfer Coding Registry . . . . . . . . . . . . . . . 40 | 6.2.3. Transfer Coding Registry . . . . . . . . . . . . . . . 41 | |||
| 6.3. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 41 | 6.3. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 6.4. Quality Values . . . . . . . . . . . . . . . . . . . . . . 41 | 6.4. Quality Values . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 41 | 7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 42 | 7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 43 | |||
| 7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 42 | 7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 42 | 7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 43 | |||
| 7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 44 | 7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 45 | |||
| 7.1.4. Practical Considerations . . . . . . . . . . . . . . . 46 | 7.1.4. Practical Considerations . . . . . . . . . . . . . . . 47 | |||
| 7.2. Message Transmission Requirements . . . . . . . . . . . . 47 | 7.2. Message Transmission Requirements . . . . . . . . . . . . 48 | |||
| 7.2.1. Persistent Connections and Flow Control . . . . . . . 47 | 7.2.1. Persistent Connections and Flow Control . . . . . . . 48 | |||
| 7.2.2. Monitoring Connections for Error Status Messages . . . 48 | 7.2.2. Monitoring Connections for Error Status Messages . . . 49 | |||
| 7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 48 | 7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 49 | |||
| 7.2.4. Client Behavior if Server Prematurely Closes | 7.2.4. Client Behavior if Server Prematurely Closes | |||
| Connection . . . . . . . . . . . . . . . . . . . . . . 50 | Connection . . . . . . . . . . . . . . . . . . . . . . 51 | |||
| 8. Miscellaneous notes that might disappear . . . . . . . . . . . 51 | 8. Miscellaneous notes that might disappear . . . . . . . . . . . 52 | |||
| 8.1. Scheme aliases considered harmful . . . . . . . . . . . . 51 | 8.1. Scheme aliases considered harmful . . . . . . . . . . . . 52 | |||
| 8.2. Use of HTTP for proxy communication . . . . . . . . . . . 51 | 8.2. Use of HTTP for proxy communication . . . . . . . . . . . 52 | |||
| 8.3. Interception of HTTP for access control . . . . . . . . . 51 | 8.3. Interception of HTTP for access control . . . . . . . . . 52 | |||
| 8.4. Use of HTTP by other protocols . . . . . . . . . . . . . . 51 | 8.4. Use of HTTP by other protocols . . . . . . . . . . . . . . 52 | |||
| 8.5. Use of HTTP by media type specification . . . . . . . . . 51 | 8.5. Use of HTTP by media type specification . . . . . . . . . 52 | |||
| 9. Header Field Definitions . . . . . . . . . . . . . . . . . . . 51 | 9. Header Field Definitions . . . . . . . . . . . . . . . . . . . 52 | |||
| 9.1. Connection . . . . . . . . . . . . . . . . . . . . . . . . 51 | 9.1. Connection . . . . . . . . . . . . . . . . . . . . . . . . 52 | |||
| 9.2. Content-Length . . . . . . . . . . . . . . . . . . . . . . 53 | 9.2. Content-Length . . . . . . . . . . . . . . . . . . . . . . 54 | |||
| 9.3. Date . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 | 9.3. Date . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 | |||
| 9.3.1. Clockless Origin Server Operation . . . . . . . . . . 54 | 9.3.1. Clockless Origin Server Operation . . . . . . . . . . 55 | |||
| 9.4. Host . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 | 9.4. Host . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 | |||
| 9.5. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 | 9.5. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 | |||
| 9.6. Trailer . . . . . . . . . . . . . . . . . . . . . . . . . 57 | 9.6. Trailer . . . . . . . . . . . . . . . . . . . . . . . . . 58 | |||
| 9.7. Transfer-Encoding . . . . . . . . . . . . . . . . . . . . 57 | 9.7. Transfer-Encoding . . . . . . . . . . . . . . . . . . . . 58 | |||
| 9.8. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . 58 | 9.8. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
| 9.8.1. Upgrade Token Registry . . . . . . . . . . . . . . . . 59 | 9.8.1. Upgrade Token Registry . . . . . . . . . . . . . . . . 60 | |||
| 9.9. Via . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 | 9.9. Via . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 | |||
| 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 61 | 10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 62 | |||
| 10.1. Header Field Registration . . . . . . . . . . . . . . . . 61 | 10.1. Header Field Registration . . . . . . . . . . . . . . . . 62 | |||
| 10.2. URI Scheme Registration . . . . . . . . . . . . . . . . . 62 | 10.2. URI Scheme Registration . . . . . . . . . . . . . . . . . 63 | |||
| 10.3. Internet Media Type Registrations . . . . . . . . . . . . 62 | 10.3. Internet Media Type Registrations . . . . . . . . . . . . 63 | |||
| 10.3.1. Internet Media Type message/http . . . . . . . . . . . 62 | 10.3.1. Internet Media Type message/http . . . . . . . . . . . 63 | |||
| 10.3.2. Internet Media Type application/http . . . . . . . . . 63 | 10.3.2. Internet Media Type application/http . . . . . . . . . 64 | |||
| 10.4. Transfer Coding Registry . . . . . . . . . . . . . . . . . 64 | 10.4. Transfer Coding Registry . . . . . . . . . . . . . . . . . 65 | |||
| 10.5. Upgrade Token Registration . . . . . . . . . . . . . . . . 65 | 10.5. Upgrade Token Registration . . . . . . . . . . . . . . . . 66 | |||
| 11. Security Considerations . . . . . . . . . . . . . . . . . . . 65 | 11. Security Considerations . . . . . . . . . . . . . . . . . . . 66 | |||
| 11.1. Personal Information . . . . . . . . . . . . . . . . . . . 65 | 11.1. Personal Information . . . . . . . . . . . . . . . . . . . 66 | |||
| 11.2. Abuse of Server Log Information . . . . . . . . . . . . . 66 | 11.2. Abuse of Server Log Information . . . . . . . . . . . . . 67 | |||
| 11.3. Attacks Based On File and Path Names . . . . . . . . . . . 66 | 11.3. Attacks Based On File and Path Names . . . . . . . . . . . 67 | |||
| 11.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . . . 66 | 11.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . . . 67 | |||
| 11.5. Proxies and Caching . . . . . . . . . . . . . . . . . . . 67 | 11.5. Proxies and Caching . . . . . . . . . . . . . . . . . . . 68 | |||
| 11.6. Denial of Service Attacks on Proxies . . . . . . . . . . . 68 | 11.6. Protocol Element Size Overflows . . . . . . . . . . . . . 69 | |||
| 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 68 | 11.7. Denial of Service Attacks on Proxies . . . . . . . . . . . 69 | |||
| 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 69 | 12. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 69 | |||
| 13.1. Normative References . . . . . . . . . . . . . . . . . . . 69 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . . 70 | |||
| 13.2. Informative References . . . . . . . . . . . . . . . . . . 71 | 13.1. Normative References . . . . . . . . . . . . . . . . . . . 70 | |||
| Appendix A. Tolerant Applications . . . . . . . . . . . . . . . . 73 | 13.2. Informative References . . . . . . . . . . . . . . . . . . 72 | |||
| Appendix B. HTTP Version History . . . . . . . . . . . . . . . . 74 | Appendix A. Tolerant Applications . . . . . . . . . . . . . . . . 74 | |||
| B.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 75 | Appendix B. HTTP Version History . . . . . . . . . . . . . . . . 75 | |||
| B.1.1. Multi-homed Web Servers . . . . . . . . . . . . . . . 75 | B.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 76 | |||
| B.1.1. Multi-homed Web Servers . . . . . . . . . . . . . . . 76 | ||||
| B.1.2. Keep-Alive Connections . . . . . . . . . . . . . . . . 76 | B.1.2. Keep-Alive Connections . . . . . . . . . . . . . . . . 76 | |||
| B.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 76 | B.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 77 | |||
| Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 77 | Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 78 | |||
| Appendix D. Change Log (to be removed by RFC Editor before | Appendix D. Change Log (to be removed by RFC Editor before | |||
| publication) . . . . . . . . . . . . . . . . . . . . 81 | publication) . . . . . . . . . . . . . . . . . . . . 82 | |||
| D.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 81 | D.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 82 | |||
| D.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 81 | D.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 82 | |||
| D.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 83 | D.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 84 | |||
| D.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 84 | D.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 85 | |||
| D.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 84 | D.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 85 | |||
| D.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 85 | D.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 86 | |||
| D.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 85 | D.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 86 | |||
| D.8. Since draft-ietf-httpbis-p1-messaging-06 . . . . . . . . . 86 | D.8. Since draft-ietf-httpbis-p1-messaging-06 . . . . . . . . . 87 | |||
| D.9. Since draft-ietf-httpbis-p1-messaging-07 . . . . . . . . . 87 | D.9. Since draft-ietf-httpbis-p1-messaging-07 . . . . . . . . . 88 | |||
| D.10. Since draft-ietf-httpbis-p1-messaging-08 . . . . . . . . . 87 | D.10. Since draft-ietf-httpbis-p1-messaging-08 . . . . . . . . . 88 | |||
| D.11. Since draft-ietf-httpbis-p1-messaging-09 . . . . . . . . . 88 | D.11. Since draft-ietf-httpbis-p1-messaging-09 . . . . . . . . . 89 | |||
| D.12. Since draft-ietf-httpbis-p1-messaging-10 . . . . . . . . . 88 | D.12. Since draft-ietf-httpbis-p1-messaging-10 . . . . . . . . . 89 | |||
| D.13. Since draft-ietf-httpbis-p1-messaging-11 . . . . . . . . . 89 | D.13. Since draft-ietf-httpbis-p1-messaging-11 . . . . . . . . . 90 | |||
| D.14. Since draft-ietf-httpbis-p1-messaging-12 . . . . . . . . . 89 | D.14. Since draft-ietf-httpbis-p1-messaging-12 . . . . . . . . . 90 | |||
| D.15. Since draft-ietf-httpbis-p1-messaging-13 . . . . . . . . . 90 | D.15. Since draft-ietf-httpbis-p1-messaging-13 . . . . . . . . . 91 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 | D.16. Since draft-ietf-httpbis-p1-messaging-14 . . . . . . . . . 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 | |||
| similar to that used by Internet mail [RFC5322] and the Multipurpose | similar to that used by Internet mail [RFC5322] and the Multipurpose | |||
| skipping to change at page 12, line 5 | skipping to change at page 12, line 5 | |||
| Server: Apache | Server: Apache | |||
| Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT | Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT | |||
| ETag: "34aa387-d-1568eb00" | ETag: "34aa387-d-1568eb00" | |||
| Accept-Ranges: bytes | Accept-Ranges: bytes | |||
| Content-Length: 14 | Content-Length: 14 | |||
| Vary: Accept-Encoding | Vary: Accept-Encoding | |||
| Content-Type: text/plain | Content-Type: text/plain | |||
| Hello World! | Hello World! | |||
| 2.2. Connections and Transport Independence | 2.2. Message Orientation and Buffering | |||
| Fundamentally, HTTP is a message-based protocol. Although message | ||||
| bodies can be chunked (Section 6.2.1) and implementations often make | ||||
| parts of a message available progressively, this is not required, and | ||||
| some widely-used implementations only make a message available when | ||||
| it is complete. Furthermore, while most proxies will progressively | ||||
| stream messages, some amount of buffering will take place, and some | ||||
| proxies might buffer messages to perform transformations, check | ||||
| content or provide other services. | ||||
| Therefore, extensions to and uses of HTTP cannot rely on the | ||||
| availability of a partial message, or assume that messages will not | ||||
| be buffered. There are strategies that can be used to test for | ||||
| buffering in a given connection, but it should be understood that | ||||
| behaviors can differ across connections, and between requests and | ||||
| responses. | ||||
| Recipients MUST consider every message in a connection in isolation; | ||||
| because HTTP is a stateless protocol, it cannot be assumed that two | ||||
| requests on the same connection are from the same client or share any | ||||
| other common attributes. In particular, intermediaries might mix | ||||
| requests from different clients into a single server connection. | ||||
| Note that some existing HTTP extensions (e.g., [RFC4559]) violate | ||||
| this requirement, thereby potentially causing interoperability and | ||||
| security problems. | ||||
| 2.3. Connections and Transport Independence | ||||
| HTTP messaging is independent of the underlying transport or session- | HTTP messaging is independent of the underlying transport or session- | |||
| layer connection protocol(s). HTTP only presumes a reliable | layer connection protocol(s). HTTP only presumes a reliable | |||
| transport with in-order delivery of requests and the corresponding | transport with in-order delivery of requests and the corresponding | |||
| in-order delivery of responses. The mapping of HTTP request and | in-order delivery of responses. The mapping of HTTP request and | |||
| response structures onto the data units of the underlying transport | response structures onto the data units of the underlying transport | |||
| protocol is outside the scope of this specification. | protocol is outside the scope of this specification. | |||
| The specific connection protocols to be used for an interaction are | The specific connection protocols to be used for an interaction are | |||
| determined by client configuration and the target resource's URI. | determined by client configuration and the target resource's URI. | |||
| For example, the "http" URI scheme (Section 2.6.1) indicates a | For example, the "http" URI scheme (Section 2.7.1) indicates a | |||
| default connection of TCP over IP, with a default TCP port of 80, but | default connection of TCP over IP, with a default TCP port of 80, but | |||
| the client might be configured to use a proxy via some other | the client might be configured to use a proxy via some other | |||
| connection port or protocol instead of using the defaults. | connection port or protocol instead of using the defaults. | |||
| A connection might be used for multiple HTTP request/response | A connection might be used for multiple HTTP request/response | |||
| exchanges, as defined in Section 7.1. | exchanges, as defined in Section 7.1. | |||
| 2.3. Intermediaries | 2.4. Intermediaries | |||
| HTTP enables the use of intermediaries to satisfy requests through a | HTTP enables the use of intermediaries to satisfy requests through a | |||
| chain of connections. There are three common forms of HTTP | chain of connections. There are three common forms of HTTP | |||
| intermediary: proxy, gateway, and tunnel. In some cases, a single | intermediary: proxy, gateway, and tunnel. In some cases, a single | |||
| intermediary might act as an origin server, proxy, gateway, or | intermediary might act as an origin server, proxy, gateway, or | |||
| tunnel, switching behavior based on the nature of each request. | tunnel, switching behavior based on the nature of each request. | |||
| > > > > | > > > > | |||
| UA =========== A =========== B =========== C =========== O | UA =========== A =========== B =========== C =========== O | |||
| < < < < | < < < < | |||
| skipping to change at page 13, line 30 | skipping to change at page 14, line 11 | |||
| that would be significant to the original sender or potentially | that would be significant to the original sender or potentially | |||
| significant to downstream recipients). For example, a transforming | significant to downstream recipients). For example, a transforming | |||
| proxy might be acting as a shared annotation server (modifying | proxy might be acting as a shared annotation server (modifying | |||
| responses to include references to a local annotation database), a | responses to include references to a local annotation database), a | |||
| malware filter, a format transcoder, or an intranet-to-Internet | malware filter, a format transcoder, or an intranet-to-Internet | |||
| privacy filter. Such transformations are presumed to be desired by | privacy filter. Such transformations are presumed to be desired by | |||
| the client (or client organization) that selected the proxy and are | the client (or client organization) that selected the proxy and are | |||
| beyond the scope of this specification. However, when a proxy is not | beyond the scope of this specification. However, when a proxy is not | |||
| intended to transform a given message, we use the term "non- | intended to transform a given message, we use the term "non- | |||
| transforming proxy" to target requirements that preserve HTTP message | transforming proxy" to target requirements that preserve HTTP message | |||
| semantics. | semantics. See Section 8.2.4 of [Part2] and Section 3.6 of [Part6] | |||
| for status and warning codes related to transformations. | ||||
| A "gateway" (a.k.a., "reverse proxy") is a receiving agent that acts | A "gateway" (a.k.a., "reverse proxy") is a receiving agent that acts | |||
| as a layer above some other server(s) and translates the received | as a layer above some other server(s) and translates the received | |||
| requests to the underlying server's protocol. Gateways are often | requests to the underlying server's protocol. Gateways are often | |||
| used to encapsulate legacy or untrusted information services, to | used to encapsulate legacy or untrusted information services, to | |||
| improve server performance through "accelerator" caching, and to | improve server performance through "accelerator" caching, and to | |||
| enable partitioning or load-balancing of HTTP services across | enable partitioning or load-balancing of HTTP services across | |||
| multiple machines. | multiple machines. | |||
| A gateway behaves as an origin server on its outbound connection and | A gateway behaves as an origin server on its outbound connection and | |||
| skipping to change at page 14, line 29 | skipping to change at page 15, line 10 | |||
| proxy" [RFC3040], "transparent proxy" [RFC1919], or "captive portal", | proxy" [RFC3040], "transparent proxy" [RFC1919], or "captive portal", | |||
| differs from an HTTP proxy because it has not been selected by the | differs from an HTTP proxy because it has not been selected by the | |||
| client. Instead, the network intermediary redirects outgoing TCP | client. Instead, the network intermediary redirects outgoing TCP | |||
| port 80 packets (and occasionally other common port traffic) to an | port 80 packets (and occasionally other common port traffic) to an | |||
| internal HTTP server. Interception proxies are commonly found on | internal HTTP server. Interception proxies are commonly found on | |||
| public network access points, as a means of enforcing account | public network access points, as a means of enforcing account | |||
| subscription prior to allowing use of non-local Internet services, | subscription prior to allowing use of non-local Internet services, | |||
| and within corporate firewalls to enforce network usage policies. | and within corporate firewalls to enforce network usage policies. | |||
| They are indistinguishable from a man-in-the-middle attack. | They are indistinguishable from a man-in-the-middle attack. | |||
| 2.4. Caches | 2.5. Caches | |||
| A "cache" is a local store of previous response messages and the | A "cache" is a local store of previous response messages and the | |||
| subsystem that controls its message storage, retrieval, and deletion. | subsystem that controls its message storage, retrieval, and deletion. | |||
| A cache stores cacheable responses in order to reduce the response | A cache stores cacheable responses in order to reduce the response | |||
| time and network bandwidth consumption on future, equivalent | time and network bandwidth consumption on future, equivalent | |||
| requests. Any client or server MAY employ a cache, though a cache | requests. Any client or server MAY employ a cache, though a cache | |||
| cannot be used by a server while it is acting as a tunnel. | cannot be used by a server while it is acting as a tunnel. | |||
| The effect of a cache is that the request/response chain is shortened | The effect of a cache is that the request/response chain is shortened | |||
| if one of the participants along the chain has a cached response | if one of the participants along the chain has a cached response | |||
| skipping to change at page 15, line 14 | skipping to change at page 15, line 44 | |||
| cache behavior and cacheable responses are defined in Section 2 of | cache behavior and cacheable responses are defined in Section 2 of | |||
| [Part6]. | [Part6]. | |||
| There are a wide variety of architectures and configurations of | There are a wide variety of architectures and configurations of | |||
| caches and proxies deployed across the World Wide Web and inside | caches and proxies deployed across the World Wide Web and inside | |||
| large organizations. These systems include national hierarchies of | large organizations. These systems include national hierarchies of | |||
| proxy caches to save transoceanic bandwidth, systems that broadcast | proxy caches to save transoceanic bandwidth, systems that broadcast | |||
| or multicast cache entries, organizations that distribute subsets of | or multicast cache entries, organizations that distribute subsets of | |||
| cached data via optical media, and so on. | cached data via optical media, and so on. | |||
| 2.5. Protocol Versioning | 2.6. Protocol Versioning | |||
| HTTP uses a "<major>.<minor>" numbering scheme to indicate versions | HTTP uses a "<major>.<minor>" numbering scheme to indicate versions | |||
| of the protocol. This specification defines version "1.1". The | of the protocol. This specification defines version "1.1". The | |||
| protocol version as a whole indicates the sender's compliance with | protocol version as a whole indicates the sender's compliance with | |||
| the set of requirements laid out in that version's corresponding | the set of requirements laid out in that version's corresponding | |||
| specification of HTTP. | specification of HTTP. | |||
| The version of an HTTP message is indicated by an HTTP-Version field | The version of an HTTP message is indicated by an HTTP-Version field | |||
| in the first line of the message. HTTP-Version is case-sensitive. | in the first line of the message. HTTP-Version is case-sensitive. | |||
| HTTP-Version = HTTP-Prot-Name "/" 1*DIGIT "." 1*DIGIT | HTTP-Version = HTTP-Prot-Name "/" DIGIT "." DIGIT | |||
| HTTP-Prot-Name = %x48.54.54.50 ; "HTTP", case-sensitive | HTTP-Prot-Name = %x48.54.54.50 ; "HTTP", case-sensitive | |||
| The HTTP version number consists of two non-negative decimal integers | The HTTP version number consists of two decimal digits separated by a | |||
| separated by a "." (period or decimal point). The first number | "." (period or decimal point). The first digit ("major version") | |||
| ("major version") indicates the HTTP messaging syntax, whereas the | indicates the HTTP messaging syntax, whereas the second digit ("minor | |||
| second number ("minor version") indicates the highest minor version | version") indicates the highest minor version to which the sender is | |||
| to which the sender is at least conditionally compliant and able to | at least conditionally compliant and able to understand for future | |||
| understand for future communication. The minor version advertises | communication. The minor version advertises the sender's | |||
| the sender's communication capabilities even when the sender is only | communication capabilities even when the sender is only using a | |||
| using a backwards-compatible subset of the protocol, thereby letting | backwards-compatible subset of the protocol, thereby letting the | |||
| the recipient know that more advanced features can be used in | recipient know that more advanced features can be used in response | |||
| response (by servers) or in future requests (by clients). | (by servers) or in future requests (by clients). | |||
| When comparing HTTP versions, the numbers MUST be compared | ||||
| numerically rather than lexically. For example, HTTP/2.4 is a lower | ||||
| version than HTTP/2.13, which in turn is lower than HTTP/12.3. | ||||
| Leading zeros MUST be ignored by recipients and MUST NOT be sent. | ||||
| When an HTTP/1.1 message is sent to an HTTP/1.0 recipient [RFC1945] | When an HTTP/1.1 message is sent to an HTTP/1.0 recipient [RFC1945] | |||
| or a recipient whose version is unknown, the HTTP/1.1 message is | or a recipient whose version is unknown, the HTTP/1.1 message is | |||
| constructed such that it can be interpreted as a valid HTTP/1.0 | constructed such that it can be interpreted as a valid HTTP/1.0 | |||
| message if all of the newer features are ignored. This specification | message if all of the newer features are ignored. This specification | |||
| places recipient-version requirements on some new features so that a | places recipient-version requirements on some new features so that a | |||
| compliant sender will only use compatible features until it has | compliant sender will only use compatible features until it has | |||
| determined, through configuration or the receipt of a message, that | determined, through configuration or the receipt of a message, that | |||
| the recipient supports HTTP/1.1. | the recipient supports HTTP/1.1. | |||
| skipping to change at page 17, line 26 | skipping to change at page 18, line 5 | |||
| The intention of HTTP's versioning design is that the major number | The intention of HTTP's versioning design is that the major number | |||
| will only be incremented if an incompatible message syntax is | will only be incremented if an incompatible message syntax is | |||
| introduced, and that the minor number will only be incremented when | introduced, and that the minor number will only be incremented when | |||
| changes made to the protocol have the effect of adding to the message | changes made to the protocol have the effect of adding to the message | |||
| semantics or implying additional capabilities of the sender. | semantics or implying additional capabilities of the sender. | |||
| However, the minor version was not incremented for the changes | However, the minor version was not incremented for the changes | |||
| introduced between [RFC2068] and [RFC2616], and this revision is | introduced between [RFC2068] and [RFC2616], and this revision is | |||
| specifically avoiding any such changes to the protocol. | specifically avoiding any such changes to the protocol. | |||
| 2.6. Uniform Resource Identifiers | 2.7. Uniform Resource Identifiers | |||
| Uniform Resource Identifiers (URIs) [RFC3986] are used throughout | Uniform Resource Identifiers (URIs) [RFC3986] are used throughout | |||
| HTTP as the means for identifying resources. URI references are used | HTTP as the means for identifying resources. URI references are used | |||
| to target requests, indicate redirects, and define relationships. | to target requests, indicate redirects, and define relationships. | |||
| HTTP does not limit what a resource might be; it merely defines an | HTTP does not limit what a resource might be; it merely defines an | |||
| interface that can be used to interact with a resource via HTTP. | interface that can be used to interact with a resource via HTTP. | |||
| More information on the scope of URIs and resources can be found in | More information on the scope of URIs and resources can be found in | |||
| [RFC3986]. | [RFC3986]. | |||
| This specification adopts the definitions of "URI-reference", | This specification adopts the definitions of "URI-reference", | |||
| skipping to change at page 18, line 15 | skipping to change at page 18, line 42 | |||
| Each protocol element in HTTP that allows a URI reference will | Each protocol element in HTTP that allows a URI reference will | |||
| indicate in its ABNF production whether the element allows any form | indicate in its ABNF production whether the element allows any form | |||
| of reference (URI-reference), only a URI in absolute form (absolute- | of reference (URI-reference), only a URI in absolute form (absolute- | |||
| URI), only the path and optional query components, or some | URI), only the path and optional query components, or some | |||
| combination of the above. Unless otherwise indicated, URI references | combination of the above. Unless otherwise indicated, URI references | |||
| are parsed relative to the effective request URI, which defines the | are parsed relative to the effective request URI, which defines the | |||
| default base URI for references in both the request and its | default base URI for references in both the request and its | |||
| corresponding response. | corresponding response. | |||
| 2.6.1. http URI scheme | 2.7.1. http URI scheme | |||
| The "http" URI scheme is hereby defined for the purpose of minting | The "http" URI scheme is hereby defined for the purpose of minting | |||
| identifiers according to their association with the hierarchical | identifiers according to their association with the hierarchical | |||
| namespace governed by a potential HTTP origin server listening for | namespace governed by a potential HTTP origin server listening for | |||
| TCP connections on a given port. | TCP connections on a given port. | |||
| http-URI = "http:" "//" authority path-abempty [ "?" query ] | http-URI = "http:" "//" authority path-abempty [ "?" query ] | |||
| The HTTP origin server is identified by the generic syntax's | The HTTP origin server is identified by the generic syntax's | |||
| authority component, which includes a host identifier and optional | authority component, which includes a host identifier and optional | |||
| skipping to change at page 19, line 36 | skipping to change at page 20, line 14 | |||
| authentication information, such as within command invocation | authentication information, such as within command invocation | |||
| options, configuration files, or bookmark lists, even though such | options, configuration files, or bookmark lists, even though such | |||
| usage might expose a user identifier or password. Senders MUST NOT | usage might expose a user identifier or password. Senders MUST NOT | |||
| include a userinfo subcomponent (and its "@" delimiter) when | include a userinfo subcomponent (and its "@" delimiter) when | |||
| transmitting an "http" URI in a message. Recipients of HTTP messages | transmitting an "http" URI in a message. Recipients of HTTP messages | |||
| that contain a URI reference SHOULD parse for the existence of | that contain a URI reference SHOULD parse for the existence of | |||
| userinfo and treat its presence as an error, likely indicating that | userinfo and treat its presence as an error, likely indicating that | |||
| the deprecated subcomponent is being used to obscure the authority | the deprecated subcomponent is being used to obscure the authority | |||
| for the sake of phishing attacks. | for the sake of phishing attacks. | |||
| 2.6.2. https URI scheme | 2.7.2. https URI scheme | |||
| The "https" URI scheme is hereby defined for the purpose of minting | The "https" URI scheme is hereby defined for the purpose of minting | |||
| identifiers according to their association with the hierarchical | identifiers according to their association with the hierarchical | |||
| namespace governed by a potential HTTP origin server listening for | namespace governed by a potential HTTP origin server listening for | |||
| SSL/TLS-secured connections on a given TCP port. | SSL/TLS-secured connections on a given TCP port. | |||
| All of the requirements listed above for the "http" scheme are also | All of the requirements listed above for the "http" scheme are also | |||
| requirements for the "https" scheme, except that a default TCP port | requirements for the "https" scheme, except that a default TCP port | |||
| of 443 is assumed if the port subcomponent is empty or not given, and | of 443 is assumed if the port subcomponent is empty or not given, and | |||
| the TCP connection MUST be secured for privacy through the use of | the TCP connection MUST be secured for privacy through the use of | |||
| skipping to change at page 20, line 15 | skipping to change at page 20, line 41 | |||
| They can, however, be reused in a private cache if the message is | They can, however, be reused in a private cache if the message is | |||
| cacheable by default in HTTP or specifically indicated as such by the | cacheable by default in HTTP or specifically indicated as such by the | |||
| Cache-Control header field (Section 3.2 of [Part6]). | Cache-Control header field (Section 3.2 of [Part6]). | |||
| Resources made available via the "https" scheme have no shared | Resources made available via the "https" scheme have no shared | |||
| identity with the "http" scheme even if their resource identifiers | identity with the "http" scheme even if their resource identifiers | |||
| indicate the same authority (the same host listening to the same TCP | indicate the same authority (the same host listening to the same TCP | |||
| port). They are distinct name spaces and are considered to be | port). They are distinct name spaces and are considered to be | |||
| distinct origin servers. However, an extension to HTTP that is | distinct origin servers. However, an extension to HTTP that is | |||
| defined to apply to entire host domains, such as the Cookie protocol | defined to apply to entire host domains, such as the Cookie protocol | |||
| [draft-ietf-httpstate-cookie], can allow information set by one | [RFC6265], can allow information set by one service to impact | |||
| service to impact communication with other services within a matching | communication with other services within a matching group of host | |||
| group of host domains. | domains. | |||
| The process for authoritative access to an "https" identified | The process for authoritative access to an "https" identified | |||
| resource is defined in [RFC2818]. | resource is defined in [RFC2818]. | |||
| 2.6.3. http and https URI Normalization and Comparison | 2.7.3. http and https URI Normalization and Comparison | |||
| Since the "http" and "https" schemes conform to the URI generic | Since the "http" and "https" schemes conform to the URI generic | |||
| syntax, such URIs are normalized and compared according to the | syntax, such URIs are normalized and compared according to the | |||
| algorithm defined in [RFC3986], Section 6, using the defaults | algorithm defined in [RFC3986], Section 6, using the defaults | |||
| described above for each scheme. | described above for each scheme. | |||
| If the port is equal to the default port for a scheme, the normal | If the port is equal to the default port for a scheme, the normal | |||
| form is to elide the port subcomponent. Likewise, an empty path | form is to elide the port subcomponent. Likewise, an empty path | |||
| component is equivalent to an absolute path of "/", so the normal | component is equivalent to an absolute path of "/", so the normal | |||
| form is to provide a path of "/" instead. The scheme and host are | form is to provide a path of "/" instead. The scheme and host are | |||
| skipping to change at page 23, line 19 | skipping to change at page 23, line 46 | |||
| fields with the same field name can be combined into one "field-name: | fields with the same field name can be combined into one "field-name: | |||
| field-value" pair, without changing the semantics of the message, by | field-value" pair, without changing the semantics of the message, by | |||
| appending each subsequent field value to the combined field value in | appending each subsequent field value to the combined field value in | |||
| order, separated by a comma. The order in which header fields with | order, separated by a comma. The order in which header fields with | |||
| 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 | cannot be combined into a single line ([RFC6265]). (See Appendix | |||
| ([draft-ietf-httpstate-cookie]). (See Appendix A.2.3 of [Kri2001] | A.2.3 of [Kri2001] for details.) Also note that the Set-Cookie2 | |||
| for details.) Also note that the Set-Cookie2 header field | header field specified in [RFC2965] does not share this problem. | |||
| specified in [RFC2965] does not share this problem. | ||||
| 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/1.1 senders MUST NOT produce messages | |||
| that include line folding (i.e., that contain any field-content that | 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/1.1 recipients | |||
| SHOULD accept line folding and replace any embedded obs-fold | SHOULD accept line folding and replace any embedded obs-fold | |||
| skipping to change at page 24, line 13 | skipping to change at page 24, line 37 | |||
| ; OWS / <VCHAR except "(", ")", and "\"> / obs-text | ; OWS / <VCHAR except "(", ")", and "\"> / obs-text | |||
| The backslash octet ("\") can be used as a single-octet quoting | The backslash octet ("\") can be used as a single-octet quoting | |||
| mechanism within comment constructs: | mechanism within comment constructs: | |||
| quoted-cpair = "\" ( WSP / VCHAR / obs-text ) | quoted-cpair = "\" ( WSP / VCHAR / obs-text ) | |||
| Senders SHOULD NOT escape octets that do not require escaping (i.e., | Senders SHOULD NOT escape octets that do not require escaping (i.e., | |||
| other than the backslash octet "\" and the parentheses "(" and ")"). | other than the backslash octet "\" and the parentheses "(" and ")"). | |||
| 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 | ||||
| to receive request header fields of unbounded length and respond with | ||||
| a 4xx status code if the received header field(s) would be longer | ||||
| than the server wishes to handle. | ||||
| A client that receives response headers that are longer than it | ||||
| wishes to handle can only treat it as a server error. | ||||
| Various ad-hoc limitations on header length are found in practice. | ||||
| It is RECOMMENDED that all HTTP senders and recipients support | ||||
| messages whose combined header fields have 4000 or more octets. | ||||
| 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 30, line 17 | skipping to change at page 31, line 13 | |||
| OPTIONS http://www.example.org:8001 HTTP/1.1 | OPTIONS http://www.example.org:8001 HTTP/1.1 | |||
| would be forwarded by the final proxy as | would be forwarded by the final proxy as | |||
| OPTIONS * HTTP/1.1 | OPTIONS * HTTP/1.1 | |||
| Host: www.example.org:8001 | Host: www.example.org:8001 | |||
| after connecting to port 8001 of host "www.example.org". | after connecting to port 8001 of host "www.example.org". | |||
| The request-target is transmitted in the format specified in | The request-target is transmitted in the format specified in | |||
| Section 2.6.1. If the request-target is percent-encoded ([RFC3986], | Section 2.7.1. If the request-target is percent-encoded ([RFC3986], | |||
| Section 2.1), the origin server MUST decode the request-target in | Section 2.1), the origin server MUST decode the request-target in | |||
| order to properly interpret the request. Servers SHOULD respond to | order to properly interpret the request. Servers SHOULD respond to | |||
| invalid request-targets with an appropriate status code. | invalid request-targets with an appropriate status code. | |||
| A non-transforming proxy MUST NOT rewrite the "path-absolute" part of | A non-transforming proxy MUST NOT rewrite the "path-absolute" part of | |||
| the received request-target when forwarding it to the next inbound | the received request-target when forwarding it to the next inbound | |||
| server, except as noted above to replace a null path-absolute with | server, except as noted above to replace a null path-absolute with | |||
| "/" or "*". | "/" or "*". | |||
| Note: The "no rewrite" rule prevents the proxy from changing the | Note: The "no rewrite" rule prevents the proxy from changing the | |||
| skipping to change at page 32, line 37 | skipping to change at page 33, line 35 | |||
| Example 2: the effective request URI for the message | Example 2: the effective request URI for the message | |||
| GET * HTTP/1.1 | GET * 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.6.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 "/". | |||
| 5. Response | 5. Response | |||
| After receiving and interpreting a request message, a server responds | After receiving and interpreting a request message, a server responds | |||
| with an HTTP response message. | with an HTTP response message. | |||
| Response = Status-Line ; Section 5.1 | Response = Status-Line ; Section 5.1 | |||
| *( header-field CRLF ) ; Section 3.2 | *( header-field CRLF ) ; Section 3.2 | |||
| CRLF | CRLF | |||
| skipping to change at page 55, line 14 | skipping to change at page 56, line 14 | |||
| 9.4. Host | 9.4. Host | |||
| The "Host" header field in a request provides the host and port | The "Host" header field in a request provides the host and port | |||
| information from the target resource's URI, enabling the origin | information from the target resource's URI, enabling the origin | |||
| server to distinguish between resources while servicing requests for | server to distinguish between resources while servicing requests for | |||
| multiple host names on a single IP address. Since the Host field- | multiple host names on a single IP address. Since the Host field- | |||
| value is critical information for handling a request, it SHOULD be | value is critical information for handling a request, it SHOULD be | |||
| sent as the first header field following the Request-Line. | sent as the first header field following the Request-Line. | |||
| Host = uri-host [ ":" port ] ; Section 2.6.1 | Host = uri-host [ ":" port ] ; Section 2.7.1 | |||
| A client MUST send a Host header field in all HTTP/1.1 request | A client MUST send a Host header field in all HTTP/1.1 request | |||
| messages. If the target resource's URI includes an authority | messages. If the target resource's URI includes an authority | |||
| component, then the Host field-value MUST be identical to that | component, then the Host field-value MUST be identical to that | |||
| authority component after excluding any userinfo (Section 2.6.1). If | authority component after excluding any userinfo (Section 2.7.1). If | |||
| the authority component is missing or undefined for the target | the authority component is missing or undefined for the target | |||
| resource's URI, then the Host header field MUST be sent with an empty | resource's URI, then the Host header field MUST be sent with an empty | |||
| field-value. | field-value. | |||
| For example, a GET request to the origin server for | For example, a GET request to the origin server for | |||
| <http://www.example.org/pub/WWW/> would begin with: | <http://www.example.org/pub/WWW/> would begin with: | |||
| GET /pub/WWW/ HTTP/1.1 | GET /pub/WWW/ HTTP/1.1 | |||
| Host: www.example.org | Host: www.example.org | |||
| skipping to change at page 59, line 26 | skipping to change at page 60, line 26 | |||
| Servers MUST include the "Upgrade" header field in 101 (Switching | Servers MUST include the "Upgrade" header field in 101 (Switching | |||
| Protocols) responses to indicate which protocol(s) are being switched | Protocols) responses to indicate which protocol(s) are being switched | |||
| to, and MUST include it in 426 (Upgrade Required) responses to | to, and MUST include it in 426 (Upgrade Required) responses to | |||
| indicate acceptable protocols to upgrade to. Servers MAY include it | indicate acceptable protocols to upgrade to. Servers MAY include it | |||
| in any other response to indicate that they are willing to upgrade to | in any other response to indicate that they are willing to upgrade to | |||
| one of the specified protocols. | one of the specified protocols. | |||
| This specification only defines the protocol name "HTTP" for use by | This specification only defines the protocol name "HTTP" for use by | |||
| the family of Hypertext Transfer Protocols, as defined by the HTTP | the family of Hypertext Transfer Protocols, as defined by the HTTP | |||
| version rules of Section 2.5 and future updates to this | version rules of Section 2.6 and future updates to this | |||
| specification. Additional tokens can be registered with IANA using | specification. Additional tokens can be registered with IANA using | |||
| the registration procedure defined below. | the registration procedure defined below. | |||
| 9.8.1. Upgrade Token Registry | 9.8.1. Upgrade Token Registry | |||
| The HTTP Upgrade Token Registry defines the name space for product | The HTTP Upgrade Token Registry defines the name space for product | |||
| tokens used to identify protocols in the Upgrade header field. Each | tokens used to identify protocols in the Upgrade header field. Each | |||
| registered token is associated with contact information and an | registered token is associated with contact information and an | |||
| optional set of specifications that details how the connection will | optional set of specifications that details how the connection will | |||
| be processed after it has been upgraded. | be processed after it has been upgraded. | |||
| skipping to change at page 62, line 26 | skipping to change at page 63, line 26 | |||
| | Via | http | standard | Section 9.9 | | | Via | http | standard | Section 9.9 | | |||
| +-------------------+----------+----------+-------------+ | +-------------------+----------+----------+-------------+ | |||
| 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.6.1 and 2.6.2 of this document (see | be updated to point to Sections 2.7.1 and 2.7.2 of this document (see | |||
| [RFC4395]). | [RFC4395]). | |||
| 10.3. Internet Media Type Registrations | 10.3. Internet Media Type Registrations | |||
| This document serves as the specification for the Internet media | This document serves as the specification for the Internet media | |||
| types "message/http" and "application/http". The following is to be | types "message/http" and "application/http". The following is to be | |||
| registered with IANA (see [RFC4288]). | registered with IANA (see [RFC4288]). | |||
| 10.3.1. Internet Media Type message/http | 10.3.1. Internet Media Type message/http | |||
| skipping to change at page 65, line 29 | skipping to change at page 66, line 29 | |||
| defined in Section 7.2 of [RFC2817] -- is now defined by | defined in Section 7.2 of [RFC2817] -- is now defined by | |||
| Section 9.8.1 of this document. | Section 9.8.1 of this document. | |||
| The HTTP Status Code Registry located at | The HTTP Status Code Registry located at | |||
| <http://www.iana.org/assignments/http-upgrade-tokens/> shall be | <http://www.iana.org/assignments/http-upgrade-tokens/> shall be | |||
| updated with the registration below: | updated with the registration below: | |||
| +-------+---------------------------+-------------------------------+ | +-------+---------------------------+-------------------------------+ | |||
| | Value | Description | Reference | | | Value | Description | Reference | | |||
| +-------+---------------------------+-------------------------------+ | +-------+---------------------------+-------------------------------+ | |||
| | HTTP | Hypertext Transfer | Section 2.5 of this | | | HTTP | Hypertext Transfer | Section 2.6 of this | | |||
| | | Protocol | specification | | | | Protocol | specification | | |||
| +-------+---------------------------+-------------------------------+ | +-------+---------------------------+-------------------------------+ | |||
| 11. Security Considerations | 11. Security Considerations | |||
| This section is meant to inform application developers, information | This section is meant to inform application developers, information | |||
| providers, and users of the security limitations in HTTP/1.1 as | providers, and users of the security limitations in HTTP/1.1 as | |||
| described by this document. The discussion does not include | described by this document. The discussion does not include | |||
| definitive solutions to the problems revealed, though it does make | definitive solutions to the problems revealed, though it does make | |||
| some suggestions for reducing security risks. | some suggestions for reducing security risks. | |||
| skipping to change at page 68, line 5 | skipping to change at page 69, line 5 | |||
| configuration options they provide to proxy operators (especially the | configuration options they provide to proxy operators (especially the | |||
| default configuration). | default configuration). | |||
| Users of a proxy need to be aware that proxies are no trustworthier | Users of a proxy need to be aware that proxies are no trustworthier | |||
| than the people who run them; HTTP itself cannot solve this problem. | than the people who run them; HTTP itself cannot solve this problem. | |||
| The judicious use of cryptography, when appropriate, might suffice to | The judicious use of cryptography, when appropriate, might suffice to | |||
| protect against a broad range of security and privacy attacks. Such | protect against a broad range of security and privacy attacks. Such | |||
| cryptography is beyond the scope of the HTTP/1.1 specification. | cryptography is beyond the scope of the HTTP/1.1 specification. | |||
| 11.6. Denial of Service Attacks on Proxies | 11.6. Protocol Element Size Overflows | |||
| Because HTTP uses mostly textual, character-delimited fields, | ||||
| attackers can overflow buffers in implementations, and/or perform a | ||||
| Denial of Service against implementations that accept fields with | ||||
| unlimited lengths. | ||||
| To promote interoperability, this specification makes specific | ||||
| recommendations for size limits on request-targets (Section 4.1.2) | ||||
| and blocks of header fields (Section 3.2). These are minimum | ||||
| recommendations, chosen to be supportable even by implementations | ||||
| with limited resources; it is expected that most implementations will | ||||
| choose substantially higher limits. | ||||
| This specification also provides a way for servers to reject messages | ||||
| that have request-targets that are too long (Section 8.4.15 of | ||||
| [Part2]) or request entities that are too large (Section 8.4 of | ||||
| [Part2]). | ||||
| Other fields (including but not limited to request methods, response | ||||
| status phrases, header field-names, and body chunks) SHOULD be | ||||
| limited by implementations carefully, so as to not impede | ||||
| interoperability. | ||||
| 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 | HTTP has evolved considerably over the years. It has benefited from | |||
| a large and active developer community -- the many people who have | a large and active developer community -- the many people who have | |||
| participated on the www-talk mailing list -- and it is that community | participated on the www-talk mailing list -- and it is that community | |||
| which has been most responsible for the success of HTTP and of the | which has been most responsible for the success of HTTP and of the | |||
| skipping to change at page 69, line 17 | skipping to change at page 70, line 41 | |||
| constructs defined by David H. Crocker for [RFC5234]. Similarly, it | constructs defined by David H. Crocker for [RFC5234]. Similarly, it | |||
| reuses many of the definitions provided by Nathaniel Borenstein and | reuses many of the definitions provided by Nathaniel Borenstein and | |||
| Ned Freed for MIME [RFC2045]. We hope that their inclusion in this | Ned Freed for MIME [RFC2045]. We hope that their inclusion in this | |||
| specification will help reduce past confusion over the relationship | specification will help reduce past confusion over the relationship | |||
| between HTTP and Internet mail message formats. | 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 | [ISO-8859-1] International Organization for Standardization, | |||
| Standardization, "Information | "Information technology -- 8-bit single-byte coded | |||
| technology -- 8-bit single-byte coded | graphic character sets -- Part 1: Latin alphabet No. | |||
| graphic character sets -- Part 1: | 1", ISO/IEC 8859-1:1998, 1998. | |||
| Latin alphabet No. 1", ISO/ | ||||
| IEC 8859-1:1998, 1998. | ||||
| [Part2] Fielding, R., Ed., Gettys, J., Mogul, | [Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | |||
| J., Frystyk, H., Masinter, L., Leach, | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | |||
| P., Berners-Lee, T., Lafon, Y., Ed., | Ed., and J. Reschke, Ed., "HTTP/1.1, part 2: Message | |||
| and J. Reschke, Ed., "HTTP/1.1, part | Semantics", draft-ietf-httpbis-p2-semantics-15 (work in | |||
| 2: Message Semantics", | progress), July 2011. | |||
| draft-ietf-httpbis-p2-semantics-14 | ||||
| (work in progress), April 2011. | ||||
| [Part3] Fielding, R., Ed., Gettys, J., Mogul, | [Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | |||
| J., Frystyk, H., Masinter, L., Leach, | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | |||
| P., Berners-Lee, T., Lafon, Y., Ed., | Ed., and J. Reschke, Ed., "HTTP/1.1, part 3: Message | |||
| and J. Reschke, Ed., "HTTP/1.1, part | Payload and Content Negotiation", | |||
| 3: Message Payload and Content | draft-ietf-httpbis-p3-payload-15 (work in progress), | |||
| Negotiation", | July 2011. | |||
| draft-ietf-httpbis-p3-payload-14 (work | ||||
| in progress), April 2011. | ||||
| [Part6] Fielding, R., Ed., Gettys, J., Mogul, | [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | |||
| J., Frystyk, H., Masinter, L., Leach, | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., | |||
| P., Berners-Lee, T., Lafon, Y., Ed., | Ed., Nottingham, M., Ed., and J. Reschke, Ed., | |||
| Nottingham, M., Ed., and J. Reschke, | "HTTP/1.1, part 6: Caching", | |||
| Ed., "HTTP/1.1, part 6: Caching", | draft-ietf-httpbis-p6-cache-15 (work in progress), | |||
| draft-ietf-httpbis-p6-cache-14 (work | July 2011. | |||
| in progress), April 2011. | ||||
| [RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB | [RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data | |||
| Compressed Data Format Specification | Format Specification version 3.3", RFC 1950, May 1996. | |||
| version 3.3", RFC 1950, May 1996. | ||||
| RFC 1950 is an Informational RFC, thus | RFC 1950 is an Informational RFC, thus it might be less | |||
| it might be less stable than this | stable than this specification. On the other hand, | |||
| specification. On the other hand, | this downward reference was present since the | |||
| this downward reference was present | publication of RFC 2068 in 1997 ([RFC2068]), therefore | |||
| since the publication of RFC 2068 in | it is unlikely to cause problems in practice. See also | |||
| 1997 ([RFC2068]), therefore it is | [BCP97]. | |||
| unlikely to cause problems in | ||||
| practice. See also [BCP97]. | ||||
| [RFC1951] Deutsch, P., "DEFLATE Compressed Data | [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format | |||
| Format Specification version 1.3", | Specification version 1.3", RFC 1951, May 1996. | |||
| RFC 1951, May 1996. | ||||
| RFC 1951 is an Informational RFC, thus | RFC 1951 is an Informational RFC, thus it might be less | |||
| it might be less stable than this | stable than this specification. On the other hand, | |||
| specification. On the other hand, | this downward reference was present since the | |||
| this downward reference was present | publication of RFC 2068 in 1997 ([RFC2068]), therefore | |||
| since the publication of RFC 2068 in | it is unlikely to cause problems in practice. See also | |||
| 1997 ([RFC2068]), therefore it is | [BCP97]. | |||
| unlikely to cause problems in | ||||
| practice. See also [BCP97]. | ||||
| [RFC1952] Deutsch, P., Gailly, J-L., Adler, M., | [RFC1952] Deutsch, P., Gailly, J-L., Adler, M., Deutsch, L., and | |||
| Deutsch, L., and G. Randers-Pehrson, | G. Randers-Pehrson, "GZIP file format specification | |||
| "GZIP file format specification | version 4.3", RFC 1952, May 1996. | |||
| version 4.3", RFC 1952, May 1996. | ||||
| RFC 1952 is an Informational RFC, thus | RFC 1952 is an Informational RFC, thus it might be less | |||
| it might be less stable than this | stable than this specification. On the other hand, | |||
| specification. On the other hand, | this downward reference was present since the | |||
| this downward reference was present | publication of RFC 2068 in 1997 ([RFC2068]), therefore | |||
| since the publication of RFC 2068 in | it is unlikely to cause problems in practice. See also | |||
| 1997 ([RFC2068]), therefore it is | [BCP97]. | |||
| unlikely to cause problems in | ||||
| practice. See also [BCP97]. | ||||
| [RFC2119] Bradner, S., "Key words for use in | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| RFCs to Indicate Requirement Levels", | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| BCP 14, RFC 2119, March 1997. | ||||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, | |||
| Masinter, "Uniform Resource Identifier | "Uniform Resource Identifier (URI): Generic Syntax", | |||
| (URI): Generic Syntax", STD 66, | STD 66, RFC 3986, January 2005. | |||
| RFC 3986, January 2005. | ||||
| [RFC5234] Crocker, D., Ed. and P. Overell, | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for | |||
| "Augmented BNF for Syntax | Syntax Specifications: ABNF", STD 68, RFC 5234, | |||
| Specifications: ABNF", STD 68, | January 2008. | |||
| RFC 5234, January 2008. | ||||
| [USASCII] American National Standards Institute, | [USASCII] American National Standards Institute, "Coded Character | |||
| "Coded Character Set -- 7-bit American | Set -- 7-bit American Standard Code for Information | |||
| Standard Code for Information | Interchange", ANSI X3.4, 1986. | |||
| Interchange", ANSI X3.4, 1986. | ||||
| 13.2. Informative References | 13.2. Informative References | |||
| [BCP97] Klensin, J. and S. Hartman, "Handling | [BCP97] Klensin, J. and S. Hartman, "Handling Normative | |||
| Normative References to Standards- | References to Standards-Track Documents", BCP 97, | |||
| Track Documents", BCP 97, RFC 4897, | RFC 4897, June 2007. | |||
| June 2007. | ||||
| [Kri2001] Kristol, D., "HTTP Cookies: Standards, | [Kri2001] Kristol, D., "HTTP Cookies: Standards, Privacy, and | |||
| Privacy, and Politics", ACM | Politics", ACM Transactions on Internet Technology Vol. | |||
| Transactions on Internet | 1, #2, November 2001, | |||
| Technology Vol. 1, #2, November 2001, | <http://arxiv.org/abs/cs.SE/0105018>. | |||
| <http://arxiv.org/abs/cs.SE/0105018>. | ||||
| [Nie1997] Frystyk, H., Gettys, J., | [Nie1997] Frystyk, H., Gettys, J., Prud'hommeaux, E., Lie, H., | |||
| Prud'hommeaux, E., Lie, H., and C. | and C. Lilley, "Network Performance Effects of | |||
| Lilley, "Network Performance Effects | HTTP/1.1, CSS1, and PNG", ACM Proceedings of the ACM | |||
| of HTTP/1.1, CSS1, and PNG", | SIGCOMM '97 conference on Applications, technologies, | |||
| ACM Proceedings of the ACM SIGCOMM '97 | architectures, and protocols for computer communication | |||
| conference on Applications, | SIGCOMM '97, September 1997, | |||
| technologies, architectures, and | <http://doi.acm.org/10.1145/263105.263157>. | |||
| protocols for computer communication | ||||
| SIGCOMM '97, September 1997, <http:// | ||||
| doi.acm.org/10.1145/263105.263157>. | ||||
| [Pad1995] Padmanabhan, V. and J. Mogul, | [Pad1995] Padmanabhan, V. and J. Mogul, "Improving HTTP Latency", | |||
| "Improving HTTP Latency", Computer | Computer Networks and ISDN Systems v. 28, pp. 25-35, | |||
| Networks and ISDN Systems v. 28, pp. | December 1995, | |||
| 25-35, December 1995, <http:// | <http://portal.acm.org/citation.cfm?id=219094>. | |||
| portal.acm.org/ | ||||
| citation.cfm?id=219094>. | ||||
| [RFC1123] Braden, R., "Requirements for Internet | [RFC1123] Braden, R., "Requirements for Internet Hosts - | |||
| Hosts - Application and Support", | Application and Support", STD 3, RFC 1123, | |||
| STD 3, RFC 1123, October 1989. | October 1989. | |||
| [RFC1900] Carpenter, B. and Y. Rekhter, | [RFC1900] Carpenter, B. and Y. Rekhter, "Renumbering Needs Work", | |||
| "Renumbering Needs Work", RFC 1900, | RFC 1900, February 1996. | |||
| February 1996. | ||||
| [RFC1919] Chatel, M., "Classical versus | [RFC1919] Chatel, M., "Classical versus Transparent IP Proxies", | |||
| Transparent IP Proxies", RFC 1919, | RFC 1919, March 1996. | |||
| March 1996. | ||||
| [RFC1945] Berners-Lee, T., Fielding, R., and H. | [RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, | |||
| Nielsen, "Hypertext Transfer Protocol | "Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, | |||
| -- HTTP/1.0", RFC 1945, May 1996. | May 1996. | |||
| [RFC2045] Freed, N. and N. Borenstein, | [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet | |||
| "Multipurpose Internet Mail Extensions | Mail Extensions (MIME) Part One: Format of Internet | |||
| (MIME) Part One: Format of Internet | Message Bodies", RFC 2045, November 1996. | |||
| Message Bodies", RFC 2045, | ||||
| November 1996. | ||||
| [RFC2047] Moore, K., "MIME (Multipurpose | [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail | |||
| Internet Mail Extensions) Part Three: | Extensions) Part Three: Message Header Extensions for | |||
| Message Header Extensions for Non- | Non-ASCII Text", RFC 2047, November 1996. | |||
| ASCII Text", RFC 2047, November 1996. | ||||
| [RFC2068] Fielding, R., Gettys, J., Mogul, J., | [RFC2068] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., and | |||
| Nielsen, H., and T. Berners-Lee, | T. Berners-Lee, "Hypertext Transfer Protocol -- | |||
| "Hypertext Transfer Protocol -- | HTTP/1.1", RFC 2068, January 1997. | |||
| HTTP/1.1", RFC 2068, January 1997. | ||||
| [RFC2145] Mogul, J., Fielding, R., Gettys, J., | [RFC2145] Mogul, J., Fielding, R., Gettys, J., and H. Nielsen, | |||
| and H. Nielsen, "Use and | "Use and Interpretation of HTTP Version Numbers", | |||
| Interpretation of HTTP Version | RFC 2145, May 1997. | |||
| Numbers", RFC 2145, May 1997. | ||||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
| Frystyk, H., Masinter, L., Leach, P., | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
| and T. Berners-Lee, "Hypertext | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |||
| Transfer Protocol -- HTTP/1.1", | ||||
| RFC 2616, June 1999. | ||||
| [RFC2817] Khare, R. and S. Lawrence, "Upgrading | [RFC2817] Khare, R. and S. Lawrence, "Upgrading to TLS Within | |||
| to TLS Within HTTP/1.1", RFC 2817, | HTTP/1.1", RFC 2817, May 2000. | |||
| May 2000. | ||||
| [RFC2818] Rescorla, E., "HTTP Over TLS", | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
| RFC 2818, May 2000. | ||||
| [RFC2965] Kristol, D. and L. Montulli, "HTTP | [RFC2965] Kristol, D. and L. Montulli, "HTTP State Management | |||
| State Management Mechanism", RFC 2965, | Mechanism", RFC 2965, October 2000. | |||
| October 2000. | ||||
| [RFC3040] Cooper, I., Melve, I., and G. | [RFC3040] Cooper, I., Melve, I., and G. Tomlinson, "Internet Web | |||
| Tomlinson, "Internet Web Replication | Replication and Caching Taxonomy", RFC 3040, | |||
| and Caching Taxonomy", RFC 3040, | January 2001. | |||
| January 2001. | ||||
| [RFC3864] Klyne, G., Nottingham, M., and J. | [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration | |||
| Mogul, "Registration Procedures for | Procedures for Message Header Fields", BCP 90, | |||
| Message Header Fields", BCP 90, | RFC 3864, September 2004. | |||
| RFC 3864, September 2004. | ||||
| [RFC4288] Freed, N. and J. Klensin, "Media Type | [RFC4288] Freed, N. and J. Klensin, "Media Type Specifications | |||
| Specifications and Registration | and Registration Procedures", BCP 13, RFC 4288, | |||
| Procedures", BCP 13, RFC 4288, | December 2005. | |||
| December 2005. | ||||
| [RFC4395] Hansen, T., Hardie, T., and L. | [RFC4395] Hansen, T., Hardie, T., and L. Masinter, "Guidelines | |||
| Masinter, "Guidelines and Registration | and Registration Procedures for New URI Schemes", | |||
| Procedures for New URI Schemes", | BCP 115, RFC 4395, February 2006. | |||
| BCP 115, RFC 4395, February 2006. | ||||
| [RFC5226] Narten, T. and H. Alvestrand, | [RFC4559] Jaganathan, K., Zhu, L., and J. Brezak, "SPNEGO-based | |||
| "Guidelines for Writing an IANA | Kerberos and NTLM HTTP Authentication in Microsoft | |||
| Considerations Section in RFCs", | Windows", RFC 4559, June 2006. | |||
| BCP 26, RFC 5226, May 2008. | ||||
| [RFC5322] Resnick, P., "Internet Message | [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing | |||
| Format", RFC 5322, October 2008. | an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 5226, May 2008. | ||||
| [Spe] Spero, S., "Analysis of HTTP | [RFC5322] Resnick, P., "Internet Message Format", RFC 5322, | |||
| Performance Problems", <http:// | October 2008. | |||
| sunsite.unc.edu/mdma-release/ | ||||
| http-prob.html>. | ||||
| [Tou1998] Touch, J., Heidemann, J., and K. | [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | |||
| Obraczka, "Analysis of HTTP | April 2011. | |||
| Performance", ISI Research Report ISI/ | ||||
| RR-98-463, Aug 1998, <http:// | ||||
| www.isi.edu/touch/pubs/http-perf96/>. | ||||
| (original report dated Aug. 1996) | [Spe] Spero, S., "Analysis of HTTP Performance Problems", | |||
| <http://sunsite.unc.edu/mdma-release/http-prob.html>. | ||||
| [draft-ietf-httpstate-cookie] Barth, A., "HTTP State Management | [Tou1998] Touch, J., Heidemann, J., and K. Obraczka, "Analysis of | |||
| Mechanism", | HTTP Performance", ISI Research Report ISI/RR-98-463, | |||
| draft-ietf-httpstate-cookie-23 (work | Aug 1998, <http://www.isi.edu/touch/pubs/http-perf96/>. | |||
| in progress), March 2011. | ||||
| (original report dated Aug. 1996) | ||||
| Appendix A. Tolerant Applications | Appendix A. Tolerant Applications | |||
| Although this document specifies the requirements for the generation | Although this document specifies the requirements for the generation | |||
| of HTTP/1.1 messages, not all applications will be correct in their | of HTTP/1.1 messages, not all applications will be correct in their | |||
| implementation. We therefore recommend that operational applications | implementation. We therefore recommend that operational applications | |||
| be tolerant of deviations whenever those deviations can be | be tolerant of deviations whenever those deviations can be | |||
| interpreted unambiguously. | interpreted unambiguously. | |||
| The line terminator for header fields is the sequence CRLF. However, | The line terminator for header fields is the sequence CRLF. However, | |||
| skipping to change at page 76, line 49 | skipping to change at page 77, line 30 | |||
| (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. The NUL octet is no longer | |||
| allowed in comment and quoted-string text. The quoted-pair rule no | allowed in comment and quoted-string text. The quoted-pair rule no | |||
| longer allows escaping control characters other than HTAB. Non-ASCII | longer allows escaping control characters other than HTAB. Non-ASCII | |||
| content in header fields and reason phrase has been obsoleted and | content in header fields and reason phrase has been obsoleted and | |||
| made opaque (the TEXT rule was removed) (Section 1.2.2) | made opaque (the TEXT rule was removed) (Section 1.2.2) | |||
| Clarify that HTTP-Version is case sensitive. (Section 2.5) | Clarify that the string "HTTP" in the HTTP-Version ABFN production is | |||
| case sensitive. Restrict the version numbers to be single digits due | ||||
| to the fact that implementations are known to handle multi-digit | ||||
| 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) | |||
| 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 | |||
| skipping to change at page 77, line 46 | skipping to change at page 78, line 29 | |||
| 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 | |||
| GMT = %x47.4D.54 ; GMT | GMT = %x47.4D.54 ; GMT | |||
| HTTP-Prot-Name = %x48.54.54.50 ; HTTP | HTTP-Prot-Name = %x48.54.54.50 ; HTTP | |||
| HTTP-Version = HTTP-Prot-Name "/" 1*DIGIT "." 1*DIGIT | HTTP-Version = HTTP-Prot-Name "/" DIGIT "." DIGIT | |||
| HTTP-date = rfc1123-date / obs-date | HTTP-date = rfc1123-date / obs-date | |||
| HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body | HTTP-message = start-line *( header-field CRLF ) CRLF [ message-body | |||
| ] | ] | |||
| Host = uri-host [ ":" port ] | Host = uri-host [ ":" port ] | |||
| Method = token | Method = token | |||
| OWS = *( [ obs-fold ] WSP ) | OWS = *( [ obs-fold ] WSP ) | |||
| RWS = 1*( [ obs-fold ] WSP ) | RWS = 1*( [ obs-fold ] WSP ) | |||
| Reason-Phrase = *( WSP / VCHAR / obs-text ) | Reason-Phrase = *( WSP / VCHAR / obs-text ) | |||
| Request = Request-Line *( header-field CRLF ) CRLF [ message-body ] | Request = Request-Line *( header-field CRLF ) CRLF [ message-body ] | |||
| Request-Line = Method SP request-target SP HTTP-Version CRLF | Request-Line = Method SP request-target SP HTTP-Version CRLF | |||
| Response = Status-Line *( header-field CRLF ) CRLF [ message-body ] | Response = Status-Line *( header-field CRLF ) CRLF [ message-body ] | |||
| Status-Code = 3DIGIT | Status-Code = 3DIGIT | |||
| Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF | Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF | |||
| skipping to change at page 90, line 27 | skipping to change at page 91, line 24 | |||
| 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/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 | ||||
| Closed issues: | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/273>: "HTTP-Version | ||||
| should be redefined as fixed length pair of DIGIT . DIGIT" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/282>: "Recommend | ||||
| minimum sizes for protocol elements" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/283>: "Set | ||||
| expectations around buffering" | ||||
| o <http://tools.ietf.org/wg/httpbis/trac/ticket/288>: "Considering | ||||
| messages in isolation" | ||||
| Index | Index | |||
| A | A | |||
| absolute-URI form (of request-target) 29 | absolute-URI form (of request-target) 29 | |||
| accelerator 13 | accelerator 14 | |||
| application/http Media Type 63 | application/http Media Type 64 | |||
| asterisk form (of request-target) 28 | asterisk form (of request-target) 29 | |||
| authority form (of request-target) 29 | authority form (of request-target) 30 | |||
| B | B | |||
| browser 10 | browser 10 | |||
| C | C | |||
| cache 14 | cache 15 | |||
| cacheable 14 | cacheable 15 | |||
| captive portal 14 | captive portal 14 | |||
| chunked (Coding Format) 37 | chunked (Coding Format) 38 | |||
| client 10 | client 10 | |||
| Coding Format | Coding Format | |||
| chunked 37 | chunked 38 | |||
| compress 40 | compress 41 | |||
| deflate 40 | deflate 41 | |||
| gzip 40 | gzip 41 | |||
| compress (Coding Format) 40 | compress (Coding Format) 41 | |||
| connection 10 | connection 10 | |||
| Connection header field 51 | Connection header field 52 | |||
| Content-Length header field 53 | Content-Length header field 54 | |||
| D | D | |||
| Date header field 53 | Date header field 54 | |||
| deflate (Coding Format) 40 | deflate (Coding Format) 41 | |||
| downstream 12 | downstream 13 | |||
| E | E | |||
| effective request URI 31 | effective request URI 32 | |||
| G | G | |||
| gateway 13 | gateway 14 | |||
| Grammar | Grammar | |||
| absolute-URI 17 | absolute-URI 18 | |||
| ALPHA 7 | ALPHA 7 | |||
| asctime-date 36 | asctime-date 37 | |||
| attribute 36 | attribute 37 | |||
| authority 17 | authority 18 | |||
| BWS 9 | BWS 9 | |||
| chunk 37 | chunk 38 | |||
| chunk-data 37 | chunk-data 38 | |||
| chunk-ext 37 | chunk-ext 38 | |||
| chunk-ext-name 37 | chunk-ext-name 38 | |||
| chunk-ext-val 37 | chunk-ext-val 38 | |||
| chunk-size 37 | chunk-size 38 | |||
| Chunked-Body 37 | Chunked-Body 38 | |||
| comment 23 | comment 24 | |||
| Connection 52 | Connection 53 | |||
| connection-token 52 | connection-token 53 | |||
| Content-Length 53 | Content-Length 54 | |||
| CR 7 | CR 7 | |||
| CRLF 7 | CRLF 7 | |||
| ctext 23 | ctext 24 | |||
| CTL 7 | CTL 7 | |||
| Date 53 | Date 54 | |||
| date1 35 | date1 36 | |||
| date2 36 | date2 37 | |||
| date3 36 | date3 37 | |||
| day 35 | day 36 | |||
| day-name 35 | day-name 36 | |||
| day-name-l 35 | day-name-l 36 | |||
| DIGIT 7 | DIGIT 7 | |||
| DQUOTE 7 | DQUOTE 7 | |||
| field-content 22 | field-content 23 | |||
| field-name 22 | field-name 23 | |||
| field-value 22 | field-value 23 | |||
| GMT 35 | GMT 36 | |||
| header-field 22 | header-field 23 | |||
| HEXDIG 7 | HEXDIG 7 | |||
| Host 55 | Host 56 | |||
| hour 35 | hour 36 | |||
| HTTP-date 34 | HTTP-date 35 | |||
| HTTP-message 21 | HTTP-message 21 | |||
| HTTP-Prot-Name 15 | HTTP-Prot-Name 16 | |||
| http-URI 18 | http-URI 18 | |||
| HTTP-Version 15 | HTTP-Version 16 | |||
| https-URI 19 | https-URI 20 | |||
| last-chunk 37 | last-chunk 38 | |||
| LF 7 | LF 7 | |||
| message-body 24 | message-body 25 | |||
| Method 28 | Method 29 | |||
| minute 35 | minute 36 | |||
| month 35 | month 36 | |||
| obs-date 35 | obs-date 36 | |||
| obs-text 10 | obs-text 10 | |||
| OCTET 7 | OCTET 7 | |||
| OWS 9 | OWS 9 | |||
| path-absolute 17 | path-absolute 18 | |||
| port 17 | port 18 | |||
| product 41 | product 42 | |||
| product-version 41 | product-version 42 | |||
| protocol-name 60 | protocol-name 61 | |||
| protocol-version 60 | protocol-version 61 | |||
| pseudonym 60 | pseudonym 61 | |||
| qdtext 10 | qdtext 10 | |||
| qdtext-nf 37 | qdtext-nf 38 | |||
| query 17 | query 18 | |||
| quoted-cpair 24 | quoted-cpair 24 | |||
| quoted-pair 10 | quoted-pair 10 | |||
| quoted-str-nf 37 | quoted-str-nf 38 | |||
| quoted-string 10 | quoted-string 10 | |||
| qvalue 41 | qvalue 42 | |||
| Reason-Phrase 33 | Reason-Phrase 34 | |||
| received-by 60 | received-by 61 | |||
| received-protocol 60 | received-protocol 61 | |||
| Request 28 | Request 29 | |||
| Request-Line 28 | Request-Line 29 | |||
| request-target 28 | request-target 29 | |||
| Response 32 | Response 33 | |||
| rfc850-date 36 | rfc850-date 37 | |||
| rfc1123-date 35 | rfc1123-date 36 | |||
| RWS 9 | RWS 9 | |||
| second 35 | second 36 | |||
| SP 7 | SP 7 | |||
| special 9 | special 9 | |||
| Status-Code 33 | Status-Code 34 | |||
| Status-Line 33 | Status-Line 34 | |||
| t-codings 56 | t-codings 57 | |||
| tchar 9 | tchar 9 | |||
| TE 56 | TE 57 | |||
| te-ext 56 | te-ext 57 | |||
| te-params 56 | te-params 57 | |||
| time-of-day 35 | time-of-day 36 | |||
| token 9 | token 9 | |||
| Trailer 57 | Trailer 58 | |||
| trailer-part 37 | trailer-part 38 | |||
| transfer-coding 36 | transfer-coding 37 | |||
| Transfer-Encoding 58 | Transfer-Encoding 59 | |||
| transfer-extension 36 | transfer-extension 37 | |||
| transfer-parameter 36 | transfer-parameter 37 | |||
| Upgrade 58 | Upgrade 59 | |||
| uri-host 17 | uri-host 18 | |||
| URI-reference 17 | URI-reference 18 | |||
| value 36 | value 37 | |||
| VCHAR 7 | VCHAR 7 | |||
| Via 60 | Via 61 | |||
| word 9 | word 9 | |||
| WSP 7 | WSP 7 | |||
| year 35 | year 36 | |||
| gzip (Coding Format) 40 | gzip (Coding Format) 41 | |||
| H | H | |||
| header field 20 | header field 21 | |||
| Header Fields | Header Fields | |||
| Connection 51 | Connection 52 | |||
| Content-Length 53 | Content-Length 54 | |||
| Date 53 | Date 54 | |||
| Host 55 | Host 56 | |||
| TE 56 | TE 57 | |||
| Trailer 57 | Trailer 58 | |||
| Transfer-Encoding 57 | Transfer-Encoding 58 | |||
| Upgrade 58 | Upgrade 59 | |||
| Via 60 | Via 61 | |||
| header section 20 | header section 21 | |||
| headers 20 | headers 21 | |||
| Host header field 55 | Host header field 56 | |||
| http URI scheme 18 | http URI scheme 18 | |||
| https URI scheme 19 | https URI scheme 20 | |||
| I | I | |||
| inbound 12 | inbound 13 | |||
| interception proxy 14 | interception proxy 14 | |||
| intermediary 12 | intermediary 13 | |||
| M | M | |||
| Media Type | Media Type | |||
| application/http 63 | application/http 64 | |||
| message/http 62 | message/http 63 | |||
| message 11 | message 11 | |||
| message/http Media Type 62 | message/http Media Type 63 | |||
| N | N | |||
| non-transforming proxy 13 | non-transforming proxy 13 | |||
| O | O | |||
| origin form (of request-target) 29 | origin form (of request-target) 30 | |||
| origin server 10 | origin server 10 | |||
| outbound 12 | outbound 13 | |||
| P | P | |||
| proxy 13 | proxy 13 | |||
| R | R | |||
| recipient 10 | recipient 10 | |||
| request 11 | request 11 | |||
| resource 17 | resource 18 | |||
| response 11 | response 11 | |||
| reverse proxy 13 | reverse proxy 14 | |||
| S | S | |||
| sender 10 | sender 10 | |||
| server 10 | server 10 | |||
| spider 10 | spider 10 | |||
| T | T | |||
| target resource 31 | target resource 32 | |||
| TE header field 56 | TE header field 57 | |||
| Trailer header field 57 | Trailer header field 58 | |||
| Transfer-Encoding header field 57 | Transfer-Encoding header field 58 | |||
| transforming proxy 13 | transforming proxy 13 | |||
| transparent proxy 14 | transparent proxy 14 | |||
| tunnel 14 | tunnel 14 | |||
| U | U | |||
| Upgrade header field 58 | Upgrade header field 59 | |||
| upstream 12 | upstream 13 | |||
| URI scheme | URI scheme | |||
| http 18 | http 18 | |||
| https 19 | https 20 | |||
| user agent 10 | user agent 10 | |||
| V | V | |||
| Via header field 60 | Via header field 61 | |||
| 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. 123 change blocks. | ||||
| 458 lines changed or deleted | 493 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/ | ||||