| draft-ietf-httpbis-p1-messaging-06.txt |  | draft-ietf-httpbis-p1-messaging-07.txt |
--- | --- | --- | --- | ---
| HTTPbis Working Group R. Fielding, Ed. |  | HTTPbis Working Group R. Fielding, Ed. |
| Internet-Draft Day Software |  | Internet-Draft Day Software |
| Obsoletes: 2616 (if approved) J. Gettys |  | Obsoletes: 2616 (if approved) J. Gettys |
| Intended status: Standards Track One Laptop per Child |  | Intended status: Standards Track One Laptop per Child |
| Expires: September 10, 2009 J. Mogul |  | Expires: January 14, 2010 J. Mogul |
| HP |  | HP |
| H. Frystyk |  | H. Frystyk |
| Microsoft |  | Microsoft |
| L. Masinter |  | L. Masinter |
| Adobe Systems |  | Adobe Systems |
| 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 |
| March 9, 2009 |  | July 13, 2009 |
| 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-06 |  | draft-ietf-httpbis-p1-messaging-07 |
| Status of this Memo |  | Status of this Memo |
| This Internet-Draft is submitted to IETF in full conformance with the |  | This Internet-Draft is submitted to IETF in full conformance with the |
| provisions of BCP 78 and BCP 79. This document may contain material |  | provisions of BCP 78 and BCP 79. This document may contain material |
| from IETF Documents or IETF Contributions published or made publicly |  | from IETF Documents or IETF Contributions published or made publicly |
| available before November 10, 2008. The person(s) controlling the |  | available before November 10, 2008. The person(s) controlling the |
| copyright in some of this material may not have granted the IETF |  | copyright in some of this material may not have granted the IETF |
| Trust the right to allow modifications of such material outside the |  | Trust the right to allow modifications of such material outside the |
| IETF Standards Process. Without obtaining an adequate license from |  | IETF Standards Process. Without obtaining an adequate license from |
| skipping to change at page 2, line 10 |  | skipping to change at page 2, line 10 |
| 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." |
| The list of current Internet-Drafts can be accessed at |  | The list of current Internet-Drafts can be accessed at |
| http://www.ietf.org/ietf/1id-abstracts.txt. |  | http://www.ietf.org/ietf/1id-abstracts.txt. |
| The list of Internet-Draft Shadow Directories can be accessed at |  | The list of Internet-Draft Shadow Directories can be accessed at |
| http://www.ietf.org/shadow.html. |  | http://www.ietf.org/shadow.html. |
| This Internet-Draft will expire on September 10, 2009. |  | This Internet-Draft will expire on January 14, 2010. |
| Copyright Notice |  | Copyright Notice |
| Copyright (c) 2009 IETF Trust and the persons identified as the |  | Copyright (c) 2009 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 in effect on the date of |  | Provisions Relating to IETF Documents in effect on the date of |
| publication of this document (http://trustee.ietf.org/license-info). |  | publication of this document (http://trustee.ietf.org/license-info). |
| Please review these documents carefully, as they describe your rights |  | Please review these documents carefully, as they describe your rights |
| skipping to change at page 2, line 44 |  | skipping to change at page 2, line 44 |
| frames, and describes general security concerns for implementations. |  | frames, and describes general security concerns for implementations. |
| Editorial Note (To be removed by RFC Editor) |  | Editorial Note (To be removed by RFC Editor) |
| Discussion of this draft should take place on the HTTPBIS working |  | Discussion of this draft should take place on the HTTPBIS working |
| group mailing list (ietf-http-wg@w3.org). The current issues list is |  | group mailing list (ietf-http-wg@w3.org). The current issues list is |
| at <http://tools.ietf.org/wg/httpbis/trac/report/11> and related |  | at <http://tools.ietf.org/wg/httpbis/trac/report/11> and related |
| documents (including fancy diffs) can be found at |  | documents (including fancy diffs) can be found at |
| <http://tools.ietf.org/wg/httpbis/>. |  | <http://tools.ietf.org/wg/httpbis/>. |
| The changes in this draft are summarized in Appendix E.7. |  | The changes in this draft are summarized in Appendix E.8. |
| 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 |
| 1.2.3. ABNF Rules defined in other Parts of the |  | 1.2.3. ABNF Rules defined in other Parts of the |
| Specification . . . . . . . . . . . . . . . . . . . . 9 |  | Specification . . . . . . . . . . . . . . . . . . . . 9 |
| skipping to change at page 3, line 27 |  | skipping to change at page 3, line 27 |
| 2.1.2. https URI scheme . . . . . . . . . . . . . . . . . . . 11 |  | 2.1.2. https URI scheme . . . . . . . . . . . . . . . . . . . 11 |
| 2.1.3. URI Comparison . . . . . . . . . . . . . . . . . . . . 11 |  | 2.1.3. URI Comparison . . . . . . . . . . . . . . . . . . . . 11 |
| 2.1.4. Scheme aliases considered harmful . . . . . . . . . . 12 |  | 2.1.4. Scheme aliases considered harmful . . . . . . . . . . 12 |
| 2.2. Overall Operation . . . . . . . . . . . . . . . . . . . . 12 |  | 2.2. Overall Operation . . . . . . . . . . . . . . . . . . . . 12 |
| 2.3. Use of HTTP for proxy communication . . . . . . . . . . . 14 |  | 2.3. Use of HTTP for proxy communication . . . . . . . . . . . 14 |
| 2.4. Interception of HTTP for access control . . . . . . . . . 14 |  | 2.4. Interception of HTTP for access control . . . . . . . . . 14 |
| 2.5. Use of HTTP by other protocols . . . . . . . . . . . . . . 14 |  | 2.5. Use of HTTP by other protocols . . . . . . . . . . . . . . 14 |
| 2.6. Use of HTTP by media type specification . . . . . . . . . 14 |  | 2.6. Use of HTTP by media type specification . . . . . . . . . 14 |
| 3. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 14 |  | 3. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 14 |
| 3.1. HTTP Version . . . . . . . . . . . . . . . . . . . . . . . 14 |  | 3.1. HTTP Version . . . . . . . . . . . . . . . . . . . . . . . 14 |
| 3.2. Date/Time Formats . . . . . . . . . . . . . . . . . . . . 15 |  | 3.2. Date/Time Formats: Full Date . . . . . . . . . . . . . . . 15 |
| 3.2.1. Full Date . . . . . . . . . . . . . . . . . . . . . . 15 |  | 3.3. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 18 |
| 3.3. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 17 |  | 3.3.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 19 |
| 3.3.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 18 |  | 3.4. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 21 |
| 3.4. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 20 |  | 3.5. Quality Values . . . . . . . . . . . . . . . . . . . . . . 22 |
| 3.5. Quality Values . . . . . . . . . . . . . . . . . . . . . . 21 |  | 4. HTTP Message . . . . . . . . . . . . . . . . . . . . . . . . . 22 |
| 4. HTTP Message . . . . . . . . . . . . . . . . . . . . . . . . . 21 |  | 4.1. Message Types . . . . . . . . . . . . . . . . . . . . . . 22 |
| 4.1. Message Types . . . . . . . . . . . . . . . . . . . . . . 21 |  | 4.2. Message Headers . . . . . . . . . . . . . . . . . . . . . 23 |
| 4.2. Message Headers . . . . . . . . . . . . . . . . . . . . . 22 |  | 4.3. Message Body . . . . . . . . . . . . . . . . . . . . . . . 24 |
| 4.3. Message Body . . . . . . . . . . . . . . . . . . . . . . . 23 |  | 4.4. Message Length . . . . . . . . . . . . . . . . . . . . . . 25 |
| 4.4. Message Length . . . . . . . . . . . . . . . . . . . . . . 24 |  | 4.5. General Header Fields . . . . . . . . . . . . . . . . . . 27 |
| 4.5. General Header Fields . . . . . . . . . . . . . . . . . . 26 |  | 5. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 |
| 5. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 |  |  |
| 5.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . . 27 |  | 5.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . . 27 |
| 5.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . . 27 |  | 5.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . . 28 |
| 5.1.2. request-target . . . . . . . . . . . . . . . . . . . . 27 |  | 5.1.2. request-target . . . . . . . . . . . . . . . . . . . . 28 |
| 5.2. The Resource Identified by a Request . . . . . . . . . . . 29 |  | 5.2. The Resource Identified by a Request . . . . . . . . . . . 30 |
| 6. Response . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 |  | 6. Response . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 |
| 6.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . . 30 |  | 6.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . . 31 |
| 6.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 30 |  | 6.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 31 |
| 7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 31 |  | 7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 32 |
| 7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 31 |  | 7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 32 |
| 7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 31 |  | 7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 32 |
| 7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 32 |  | 7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 32 |
| 7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 33 |  | 7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 34 |
| 7.1.4. Practical Considerations . . . . . . . . . . . . . . . 33 |  | 7.1.4. Practical Considerations . . . . . . . . . . . . . . . 34 |
| 7.2. Message Transmission Requirements . . . . . . . . . . . . 34 |  | 7.2. Message Transmission Requirements . . . . . . . . . . . . 35 |
| 7.2.1. Persistent Connections and Flow Control . . . . . . . 34 |  | 7.2.1. Persistent Connections and Flow Control . . . . . . . 35 |
| 7.2.2. Monitoring Connections for Error Status Messages . . . 35 |  | 7.2.2. Monitoring Connections for Error Status Messages . . . 35 |
| 7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 35 |  | 7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 36 |
| 7.2.4. Client Behavior if Server Prematurely Closes |  | 7.2.4. Client Behavior if Server Prematurely Closes |
| Connection . . . . . . . . . . . . . . . . . . . . . . 37 |  | Connection . . . . . . . . . . . . . . . . . . . . . . 38 |
| 8. Header Field Definitions . . . . . . . . . . . . . . . . . . . 38 |  | 8. Header Field Definitions . . . . . . . . . . . . . . . . . . . 38 |
| 8.1. Connection . . . . . . . . . . . . . . . . . . . . . . . . 38 |  | 8.1. Connection . . . . . . . . . . . . . . . . . . . . . . . . 39 |
| 8.2. Content-Length . . . . . . . . . . . . . . . . . . . . . . 39 |  | 8.2. Content-Length . . . . . . . . . . . . . . . . . . . . . . 40 |
| 8.3. Date . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 |  | 8.3. Date . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 |
| 8.3.1. Clockless Origin Server Operation . . . . . . . . . . 41 |  | 8.3.1. Clockless Origin Server Operation . . . . . . . . . . 41 |
| 8.4. Host . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 |  | 8.4. Host . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 |
| 8.5. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 |  | 8.5. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 |
| 8.6. Trailer . . . . . . . . . . . . . . . . . . . . . . . . . 43 |  | 8.6. Trailer . . . . . . . . . . . . . . . . . . . . . . . . . 44 |
| 8.7. Transfer-Encoding . . . . . . . . . . . . . . . . . . . . 43 |  | 8.7. Transfer-Encoding . . . . . . . . . . . . . . . . . . . . 44 |
| 8.8. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . 44 |  | 8.8. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . . 45 |
| 8.9. Via . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 |  | 8.9. Via . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 |
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 |  | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 47 |
| 9.1. Message Header Registration . . . . . . . . . . . . . . . 47 |  | 9.1. Message Header Registration . . . . . . . . . . . . . . . 47 |
| 9.2. URI Scheme Registration . . . . . . . . . . . . . . . . . 47 |  | 9.2. URI Scheme Registration . . . . . . . . . . . . . . . . . 48 |
| 9.3. Internet Media Type Registrations . . . . . . . . . . . . 47 |  | 9.3. Internet Media Type Registrations . . . . . . . . . . . . 48 |
| 9.3.1. Internet Media Type message/http . . . . . . . . . . . 47 |  | 9.3.1. Internet Media Type message/http . . . . . . . . . . . 48 |
| 9.3.2. Internet Media Type application/http . . . . . . . . . 48 |  | 9.3.2. Internet Media Type application/http . . . . . . . . . 49 |
| 10. Security Considerations . . . . . . . . . . . . . . . . . . . 50 |  | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 50 |
| 10.1. Personal Information . . . . . . . . . . . . . . . . . . . 50 |  | 10.1. Personal Information . . . . . . . . . . . . . . . . . . . 51 |
| 10.2. Abuse of Server Log Information . . . . . . . . . . . . . 50 |  | 10.2. Abuse of Server Log Information . . . . . . . . . . . . . 51 |
| 10.3. Attacks Based On File and Path Names . . . . . . . . . . . 50 |  | 10.3. Attacks Based On File and Path Names . . . . . . . . . . . 51 |
| 10.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . . . 51 |  | 10.4. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . . . 51 |
| 10.5. Proxies and Caching . . . . . . . . . . . . . . . . . . . 51 |  | 10.5. Proxies and Caching . . . . . . . . . . . . . . . . . . . 52 |
| 10.6. Denial of Service Attacks on Proxies . . . . . . . . . . . 52 |  | 10.6. Denial of Service Attacks on Proxies . . . . . . . . . . . 53 |
| 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 52 |  | 11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 53 |
| 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53 |  | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 54 |
| 12.1. Normative References . . . . . . . . . . . . . . . . . . . 53 |  | 12.1. Normative References . . . . . . . . . . . . . . . . . . . 54 |
| 12.2. Informative References . . . . . . . . . . . . . . . . . . 54 |  | 12.2. Informative References . . . . . . . . . . . . . . . . . . 55 |
| Appendix A. Tolerant Applications . . . . . . . . . . . . . . . . 56 |  | Appendix A. Tolerant Applications . . . . . . . . . . . . . . . . 57 |
| Appendix B. Compatibility with Previous Versions . . . . . . . . 57 |  | Appendix B. Compatibility with Previous Versions . . . . . . . . 58 |
| B.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 58 |  | B.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 59 |
| B.1.1. Changes to Simplify Multi-homed Web Servers and |  | B.1.1. Changes to Simplify Multi-homed Web Servers and |
| Conserve IP Addresses . . . . . . . . . . . . . . . . 58 |  | Conserve IP Addresses . . . . . . . . . . . . . . . . 59 |
| B.2. Compatibility with HTTP/1.0 Persistent Connections . . . . 59 |  | B.2. Compatibility with HTTP/1.0 Persistent Connections . . . . 59 |
| B.3. Changes from RFC 2068 . . . . . . . . . . . . . . . . . . 59 |  | B.3. Changes from RFC 2068 . . . . . . . . . . . . . . . . . . 60 |
| B.4. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 60 |  | B.4. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 61 |
| Appendix C. Terminology . . . . . . . . . . . . . . . . . . . . . 60 |  | Appendix C. Terminology . . . . . . . . . . . . . . . . . . . . . 61 |
| Appendix D. Collected ABNF . . . . . . . . . . . . . . . . . . . 64 |  | Appendix D. Collected ABNF . . . . . . . . . . . . . . . . . . . 64 |
| Appendix E. Change Log (to be removed by RFC Editor before |  | Appendix E. Change Log (to be removed by RFC Editor before |
| publication) . . . . . . . . . . . . . . . . . . . . 68 |  | publication) . . . . . . . . . . . . . . . . . . . . 69 |
| E.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 68 |  | E.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 69 |
| E.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 68 |  | E.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 69 |
| E.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 70 |  | E.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 70 |
| E.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 71 |  | E.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 71 |
| E.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 71 |  | E.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 72 |
| E.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 72 |  | E.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 72 |
| E.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 72 |  | E.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 73 |
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 |  | E.8. Since draft-ietf-httpbis-p1-messaging-06 . . . . . . . . . 74 |
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 77 |  | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 |
|  |  | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 78 |
| 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 request targets and |  | Identifier (URI) standard [RFC3986] to indicate request targets and |
| relationships between resources. Messages are passed in a format |  | 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 9, line 29 |  | skipping to change at page 9, line 29 |
| tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" |  | tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" |
| / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" |  | / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" |
| / DIGIT / ALPHA |  | / DIGIT / ALPHA |
| token = 1*tchar |  | token = 1*tchar |
| A string of text is parsed as a single word if it is quoted using |  | A string of text is parsed as a single word if it is quoted using |
| double-quote marks. |  | double-quote marks. |
| quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE |  | quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE |
| qdtext = *( OWS / %x21 / %x23-5B / %x5D-7E / obs-text ) |  | qdtext = OWS / %x21 / %x23-5B / %x5D-7E / obs-text |
|  |  | ; OWS / <VCHAR except DQUOTE and "\"> / obs-text |
| obs-text = %x80-FF |  | obs-text = %x80-FF |
| The backslash character ("\") MAY be used as a single-character |  | The backslash character ("\") MAY be used as a single-character |
| quoting mechanism only within quoted-string and comment constructs. |  | quoting mechanism only within quoted-string and comment constructs. |
| quoted-text = %x01-09 / |  | quoted-text = %x01-09 / |
| %x0B-0C / |  | %x0B-0C / |
| %x0E-FF ; Characters excluding NUL, CR and LF |  | %x0E-FF ; Characters excluding NUL, CR and LF |
| quoted-pair = "\" quoted-text |  | quoted-pair = "\" quoted-text |
| skipping to change at page 15, line 41 |  | skipping to change at page 15, line 41 |
| Due to interoperability problems with HTTP/1.0 proxies discovered |  | Due to interoperability problems with HTTP/1.0 proxies discovered |
| since the publication of [RFC2068], caching proxies MUST, gateways |  | since the publication of [RFC2068], caching proxies MUST, gateways |
| MAY, and tunnels MUST NOT upgrade the request to the highest version |  | MAY, and tunnels MUST NOT upgrade the request to the highest version |
| they support. The proxy/gateway's response to that request MUST be |  | they support. The proxy/gateway's response to that request MUST be |
| in the same major version as the request. |  | in the same major version as the request. |
| Note: Converting between versions of HTTP may involve modification |  | Note: Converting between versions of HTTP may involve modification |
| of header fields required or forbidden by the versions involved. |  | of header fields required or forbidden by the versions involved. |
| 3.2. Date/Time Formats |  | 3.2. Date/Time Formats: Full Date |
| 3.2.1. Full Date |  |  |
| HTTP applications have historically allowed three different formats |  | HTTP applications have historically allowed three different formats |
| for the representation of date/time stamps: |  | for the representation of date/time stamps: |
| Sun, 06 Nov 1994 08:49:37 GMT ; RFC 1123 |  | Sun, 06 Nov 1994 08:49:37 GMT ; RFC 1123 |
| Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format |  | Sunday, 06-Nov-94 08:49:37 GMT ; obsolete RFC 850 format |
| Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format |  | Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format |
| The first format is preferred as an Internet standard and represents |  | The first format is preferred as an Internet standard and represents |
| a fixed-length subset of that defined by [RFC1123]. The other |  | a fixed-length subset of that defined by [RFC1123]. The other |
| formats are described here only for compatibility with obsolete |  | formats are described here only for compatibility with obsolete |
| implementations. HTTP/1.1 clients and servers that parse the date |  | implementations. HTTP/1.1 clients and servers that parse the date |
| value MUST accept all three formats (for compatibility with |  | value MUST accept all three formats (for compatibility with |
| HTTP/1.0), though they MUST only generate the RFC 1123 format for |  | HTTP/1.0), though they MUST only generate the RFC 1123 format for |
| representing HTTP-date values in header fields. See Appendix A for |  | representing HTTP-date values in header fields. See Appendix A for |
| further information. |  | further information. |
| Note: Recipients of date values are encouraged to be robust in |  |  |
| accepting date values that may have been sent by non-HTTP |  |  |
| applications, as is sometimes the case when retrieving or posting |  |  |
| messages via proxies/gateways to SMTP or NNTP. |  |  |
| All HTTP date/time stamps MUST be represented in Greenwich Mean Time |  | All HTTP date/time stamps MUST be represented in Greenwich Mean Time |
| (GMT), without exception. For the purposes of HTTP, GMT is exactly |  | (GMT), without exception. For the purposes of HTTP, GMT is exactly |
| equal to UTC (Coordinated Universal Time). This is indicated in the |  | equal to UTC (Coordinated Universal Time). This is indicated in the |
| first two formats by the inclusion of "GMT" as the three-letter |  | first two formats by the inclusion of "GMT" as the three-letter |
| abbreviation for time zone, and MUST be assumed when reading the |  | abbreviation for time zone, and MUST be assumed when reading the |
| asctime format. HTTP-date is case sensitive and MUST NOT include |  | asctime format. HTTP-date is case sensitive and MUST NOT include |
| additional whitespace beyond that specifically included as SP in the |  | additional whitespace beyond that specifically included as SP in the |
| grammar. |  | grammar. |
| HTTP-date = rfc1123-date / obsolete-date |  | HTTP-date = rfc1123-date / obs-date |
| obsolete-date = rfc850-date / asctime-date |  |  |
| rfc1123-date = wkday "," SP date1 SP time SP GMT |  | Preferred format: |
| rfc850-date = weekday "," SP date2 SP time SP GMT |  |  |
| asctime-date = wkday SP date3 SP time SP 4DIGIT |  | rfc1123-date = day-name "," SP date1 SP time-of-day SP GMT |
| date1 = 2DIGIT SP month SP 4DIGIT |  |  |
| ; day month year (e.g., 02 Jun 1982) |  | day-name = %x4D.6F.6E ; "Mon", case-sensitive |
| date2 = 2DIGIT "-" month "-" 2DIGIT |  | / %x54.75.65 ; "Tue", case-sensitive |
| ; day-month-year (e.g., 02-Jun-82) |  | / %x57.65.64 ; "Wed", case-sensitive |
| date3 = month SP ( 2DIGIT / ( SP 1DIGIT )) |  | / %x54.68.75 ; "Thu", case-sensitive |
| ; month day (e.g., Jun 2) |  | / %x46.72.69 ; "Fri", case-sensitive |
| time = 2DIGIT ":" 2DIGIT ":" 2DIGIT |  | / %x53.61.74 ; "Sat", case-sensitive |
| ; 00:00:00 - 23:59:59 |  | / %x53.75.6E ; "Sun", case-sensitive |
| wkday = s-Mon / s-Tue / s-Wed |  |  |
| / s-Thu / s-Fri / s-Sat / s-Sun |  | date1 = day SP month SP year |
| weekday = l-Mon / l-Tue / l-Wed |  | day = 2DIGIT |
| / l-Thu / l-Fri / l-Sat / l-Sun |  | month = %x4A.61.6E ; "Jan", case-sensitive |
| month = s-Jan / s-Feb / s-Mar / s-Apr |  | / %x46.65.62 ; "Feb", case-sensitive |
| / s-May / s-Jun / s-Jul / s-Aug |  | / %x4D.61.72 ; "Mar", case-sensitive |
| / s-Sep / s-Oct / s-Nov / s-Dec |  | / %x41.70.72 ; "Apr", case-sensitive |
|  |  | / %x4D.61.79 ; "May", case-sensitive |
|  |  | / %x4A.75.6E ; "Jun", case-sensitive |
|  |  | / %x4A.75.6C ; "Jul", case-sensitive |
|  |  | / %x41.75.67 ; "Aug", case-sensitive |
|  |  | / %x53.65.70 ; "Sep", case-sensitive |
|  |  | / %x4F.63.74 ; "Oct", case-sensitive |
|  |  | / %x4E.6F.76 ; "Nov", case-sensitive |
|  |  | / %x44.65.63 ; "Dec", case-sensitive |
|  |  | year = 4DIGIT |
| GMT = %x47.4D.54 ; "GMT", case-sensitive |  | GMT = %x47.4D.54 ; "GMT", case-sensitive |
| s-Mon = %x4D.6F.6E ; "Mon", case-sensitive |  | time-of-day = hour ":" minute ":" second |
| s-Tue = %x54.75.65 ; "Tue", case-sensitive |  | ; 00:00:00 - 23:59:59 |
| s-Wed = %x57.65.64 ; "Wed", case-sensitive |  |  |
| s-Thu = %x54.68.75 ; "Thu", case-sensitive |  |  |
| s-Fri = %x46.72.69 ; "Fri", case-sensitive |  |  |
| s-Sat = %x53.61.74 ; "Sat", case-sensitive |  |  |
| s-Sun = %x53.75.6E ; "Sun", case-sensitive |  |  |
| l-Mon = %x4D.6F.6E.64.61.79 ; "Monday", case-sensitive |  | hour = 2DIGIT |
| l-Tue = %x54.75.65.73.64.61.79 ; "Tuesday", case-sensitive |  | minute = 2DIGIT |
| l-Wed = %x57.65.64.6E.65.73.64.61.79 ; "Wednesday", case-sensitive |  | second = 2DIGIT |
| l-Thu = %x54.68.75.72.73.64.61.79 ; "Thursday", case-sensitive |  |  |
| l-Fri = %x46.72.69.64.61.79 ; "Friday", case-sensitive |  |  |
| l-Sat = %x53.61.74.75.72.64.61.79 ; "Saturday", case-sensitive |  |  |
| l-Sun = %x53.75.6E.64.61.79 ; "Sunday", case-sensitive |  |  |
| s-Jan = %x4A.61.6E ; "Jan", case-sensitive |  | The semantics of day-name, day, month, year, and time-of-day are the |
| s-Feb = %x46.65.62 ; "Feb", case-sensitive |  | same as those defined for the RFC 5322 constructs with the |
| s-Mar = %x4D.61.72 ; "Mar", case-sensitive |  | corresponding name ([RFC5322], Section 3.3). |
| s-Apr = %x41.70.72 ; "Apr", case-sensitive |  |  |
| s-May = %x4D.61.79 ; "May", case-sensitive |  |  |
| s-Jun = %x4A.75.6E ; "Jun", case-sensitive |  |  |
| s-Jul = %x4A.75.6C ; "Jul", case-sensitive |  |  |
| s-Aug = %x41.75.67 ; "Aug", case-sensitive |  |  |
| s-Sep = %x53.65.70 ; "Sep", case-sensitive |  |  |
| s-Oct = %x4F.63.74 ; "Oct", case-sensitive |  |  |
| s-Nov = %x4E.6F.76 ; "Nov", case-sensitive |  |  |
| s-Dec = %x44.65.63 ; "Dec", case-sensitive |  |  |
| Note: HTTP requirements for the date/time stamp format apply only to |  | Obsolete formats: |
| their usage within the protocol stream. Clients and servers are not |  |  |
| required to use these formats for user presentation, request logging, |  | obs-date = rfc850-date / asctime-date |
| etc. |  | rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT |
|  |  | date2 = day "-" month "-" 2DIGIT |
|  |  | ; day-month-year (e.g., 02-Jun-82) |
|  |  | day-name-l = %x4D.6F.6E.64.61.79 ; "Monday", case-sensitive |
|  |  | / %x54.75.65.73.64.61.79 ; "Tuesday", case-sensitive |
|  |  | / %x57.65.64.6E.65.73.64.61.79 ; "Wednesday", case-sensitive |
|  |  | / %x54.68.75.72.73.64.61.79 ; "Thursday", case-sensitive |
|  |  | / %x46.72.69.64.61.79 ; "Friday", case-sensitive |
|  |  | / %x53.61.74.75.72.64.61.79 ; "Saturday", case-sensitive |
|  |  | / %x53.75.6E.64.61.79 ; "Sunday", case-sensitive |
|  |  | asctime-date = day-name SP date3 SP time-of-day SP year |
|  |  | date3 = month SP ( 2DIGIT / ( SP 1DIGIT )) |
|  |  | ; month day (e.g., Jun 2) |
|  |  | Note: Recipients of date values are encouraged to be robust in |
|  |  | accepting date values that may have been sent by non-HTTP |
|  |  | applications, as is sometimes the case when retrieving or posting |
|  |  | messages via proxies/gateways to SMTP or NNTP. |
|  |  | Note: HTTP requirements for the date/time stamp format apply only |
|  |  | to their usage within the protocol stream. Clients and servers |
|  |  | are not required to use these formats for user presentation, |
|  |  | request logging, etc. |
| 3.3. Transfer Codings |  | 3.3. Transfer Codings |
| Transfer-coding values are used to indicate an encoding |  | Transfer-coding values are used to indicate an encoding |
| transformation that has been, can be, or may need to be applied to an |  | transformation that has been, can be, or may need to be applied to an |
| entity-body in order to ensure "safe transport" through the network. |  | entity-body in order to ensure "safe transport" through the network. |
| This differs from a content coding in that the transfer-coding is a |  | This differs from a content coding in that the transfer-coding is a |
| property of the message, not of the original entity. |  | property of the message, not of the original entity. |
| transfer-coding = "chunked" / transfer-extension |  | transfer-coding = "chunked" / transfer-extension |
| transfer-extension = token *( OWS ";" OWS parameter ) |  | transfer-extension = token *( OWS ";" OWS transfer-parameter ) |
| Parameters are in the form of attribute/value pairs. |  | Parameters are in the form of attribute/value pairs. |
| parameter = attribute BWS "=" BWS value |  | transfer-parameter = attribute BWS "=" BWS value |
| attribute = token |  | attribute = token |
| value = token / quoted-string |  | value = token / quoted-string |
| All transfer-coding values are case-insensitive. HTTP/1.1 uses |  | All transfer-coding values are case-insensitive. HTTP/1.1 uses |
| transfer-coding values in the TE header field (Section 8.5) and in |  | transfer-coding values in the TE header field (Section 8.5) and in |
| the Transfer-Encoding header field (Section 8.7). |  | the Transfer-Encoding header field (Section 8.7). |
| Whenever a transfer-coding is applied to a message-body, the set of |  | Whenever a transfer-coding is applied to a message-body, the set of |
| transfer-codings MUST include "chunked", unless the message indicates |  | transfer-codings MUST include "chunked", unless the message indicates |
| it is terminated by closing the connection. When the "chunked" |  | it is terminated by closing the connection. When the "chunked" |
| transfer-coding is used, it MUST be the last transfer-coding applied |  | transfer-coding is used, it MUST be the last transfer-coding applied |
| to the message-body. The "chunked" transfer-coding MUST NOT be |  | to the message-body. The "chunked" transfer-coding MUST NOT be |
| applied more than once to a message-body. These rules allow the |  | applied more than once to a message-body. These rules allow the |
| skipping to change at page 23, line 18 |  | skipping to change at page 24, line 18 |
| whitespace with a single SP prior to interpreting the field value or |  | whitespace with a single SP prior to interpreting the field value or |
| forwarding the message downstream. |  | forwarding the message downstream. |
| Comments can be included in some HTTP header fields by surrounding |  | Comments can be included in some HTTP header fields by surrounding |
| the comment text with parentheses. Comments are only allowed in |  | the comment text with parentheses. Comments are only allowed in |
| fields containing "comment" as part of their field value definition. |  | fields containing "comment" as part of their field value definition. |
| In all other fields, parentheses are considered part of the field |  | In all other fields, parentheses are considered part of the field |
| value. |  | value. |
| comment = "(" *( ctext / quoted-pair / comment ) ")" |  | comment = "(" *( ctext / quoted-pair / comment ) ")" |
| ctext = *( OWS / %x21-27 / %x2A-7E / obs-text ) |  | ctext = OWS / %x21-27 / %x2A-5B / %x5D-7E / obs-text |
|  |  | ; OWS / <VCHAR except "(", ")", and "\"> / obs-text |
| The order in which header fields with differing field names are |  | The order in which header fields with differing field names are |
| received is not significant. However, it is "good practice" to send |  | received is not significant. However, it is "good practice" to send |
| general-header fields first, followed by request-header or response- |  | general-header fields first, followed by request-header or response- |
| header fields, and ending with the entity-header fields. |  | header fields, and ending with the entity-header fields. |
| Multiple message-header fields with the same field-name MAY be |  | Multiple message-header fields with the same field-name MAY be |
| present in a message if and only if the entire field-value for that |  | present in a message if and only if the entire field-value for that |
| header field is defined as a comma-separated list [i.e., #(values)]. |  | header field is defined as a comma-separated list [i.e., #(values)]. |
| It MUST be possible to combine the multiple header fields into one |  | It MUST be possible to combine the multiple header fields into one |
| skipping to change at page 24, line 18 |  | skipping to change at page 25, line 20 |
| message. Transfer-Encoding is a property of the message, not of the |  | message. Transfer-Encoding is a property of the message, not of the |
| entity, and thus MAY be added or removed by any application along the |  | entity, and thus MAY be added or removed by any application along the |
| request/response chain. (However, Section 3.3 places restrictions on |  | request/response chain. (However, Section 3.3 places restrictions on |
| when certain transfer-codings may be used.) |  | when certain transfer-codings may be used.) |
| The rules for when a message-body is allowed in a message differ for |  | The rules for when a message-body is allowed in a message differ for |
| requests and responses. |  | requests and responses. |
| The presence of a message-body in a request is signaled by the |  | The presence of a message-body in a request is signaled by the |
| inclusion of a Content-Length or Transfer-Encoding header field in |  | inclusion of a Content-Length or Transfer-Encoding header field in |
| the request's message-headers. A message-body MUST NOT be included |  | the request's message-headers. When a request message contains both |
| in a request if the specification of the request method (Section 2 of |  | a message-body of non-zero length and a method that does not define |
| [Part2]) explicitly disallows an entity-body in requests. When a |  | any semantics for that request message-body, then an origin server |
| request message contains both a message-body of non-zero length and a |  | SHOULD either ignore the message-body or respond with an appropriate |
| method that does not define any semantics for that request message- |  | error message (e.g., 413). A proxy or gateway, when presented the |
| body, then an origin server SHOULD either ignore the message-body or |  | same request, SHOULD either forward the request inbound with the |
| respond with an appropriate error message (e.g., 413). A proxy or |  | message-body or ignore the message-body when determining a response. |
| gateway, when presented the same request, SHOULD either forward the |  |  |
| request inbound with the message-body or ignore the message-body when |  |  |
| determining a response. |  |  |
| For response messages, whether or not a message-body is included with |  | For response messages, whether or not a message-body is included with |
| a message is dependent on both the request method and the response |  | a message is dependent on both the request method and the response |
| status code (Section 6.1.1). All responses to the HEAD request |  | status code (Section 6.1.1). All responses to the HEAD request |
| method MUST NOT include a message-body, even though the presence of |  | method MUST NOT include a message-body, even though the presence of |
| entity-header fields might lead one to believe they do. All 1xx |  | entity-header fields might lead one to believe they do. All 1xx |
| (informational), 204 (No Content), and 304 (Not Modified) responses |  | (informational), 204 (No Content), and 304 (Not Modified) responses |
| MUST NOT include a message-body. All other responses do include a |  | MUST NOT include a message-body. All other responses do include a |
| message-body, although it MAY be of zero length. |  | message-body, although it MAY be of zero length. |
| skipping to change at page 25, line 13 |  | skipping to change at page 26, line 10 |
| in the message. |  | in the message. |
| 2. If a Transfer-Encoding header field (Section 8.7) is present and |  | 2. If a Transfer-Encoding header field (Section 8.7) is present and |
| the "chunked" transfer-coding (Section 3.3) is used, the |  | the "chunked" transfer-coding (Section 3.3) is used, the |
| transfer-length is defined by the use of this transfer-coding. |  | transfer-length is defined by the use of this transfer-coding. |
| If a Transfer-Encoding header field is present and the "chunked" |  | If a Transfer-Encoding header field is present and the "chunked" |
| transfer-coding is not present, the transfer-length is defined by |  | transfer-coding is not present, the transfer-length is defined by |
| the sender closing the connection. |  | the sender closing the connection. |
| 3. If a Content-Length header field (Section 8.2) is present, its |  | 3. If a Content-Length header field (Section 8.2) is present, its |
| decimal value in OCTETs represents both the entity-length and the |  | value in OCTETs represents both the entity-length and the |
| transfer-length. The Content-Length header field MUST NOT be |  | transfer-length. The Content-Length header field MUST NOT be |
| sent if these two lengths are different (i.e., if a Transfer- |  | sent if these two lengths are different (i.e., if a Transfer- |
| Encoding header field is present). If a message is received with |  | Encoding header field is present). If a message is received with |
| both a Transfer-Encoding header field and a Content-Length header |  | both a Transfer-Encoding header field and a Content-Length header |
| field, the latter MUST be ignored. |  | field, the latter MUST be ignored. |
| 4. If the message uses the media type "multipart/byteranges", and |  | 4. If the message uses the media type "multipart/byteranges", and |
| the transfer-length is not otherwise specified, then this self- |  | the transfer-length is not otherwise specified, then this self- |
| delimiting media type defines the transfer-length. This media |  | delimiting media type defines the transfer-length. This media |
| type MUST NOT be used unless the sender knows that the recipient |  | type MUST NOT be used unless the sender knows that the recipient |
| skipping to change at page 31, line 23 |  | skipping to change at page 32, line 18 |
| 7.1.1. Purpose |  | 7.1.1. Purpose |
| Prior to persistent connections, a separate TCP connection was |  | Prior to persistent connections, a separate TCP connection was |
| established to fetch each URL, increasing the load on HTTP servers |  | established to fetch each URL, increasing the load on HTTP servers |
| and causing congestion on the Internet. The use of inline images and |  | and causing congestion on the Internet. The use of inline images and |
| other associated data often require a client to make multiple |  | other associated data often require a client to make multiple |
| requests of the same server in a short amount of time. Analysis of |  | requests of the same server in a short amount of time. Analysis of |
| these performance problems and results from a prototype |  | these performance problems and results from a prototype |
| implementation are available [Pad1995] [Spe]. Implementation |  | implementation are available [Pad1995] [Spe]. Implementation |
| experience and measurements of actual HTTP/1.1 (RFC 2068) |  | experience and measurements of actual HTTP/1.1 implementations show |
| implementations show good results [Nie1997]. Alternatives have also |  | good results [Nie1997]. Alternatives have also been explored, for |
| been explored, for example, T/TCP [Tou1998]. |  | example, T/TCP [Tou1998]. |
| Persistent HTTP connections have a number of advantages: |  | Persistent HTTP connections have a number of advantages: |
| o By opening and closing fewer TCP connections, CPU time is saved in |  | o By opening and closing fewer TCP connections, CPU time is saved in |
| routers and hosts (clients, servers, proxies, gateways, tunnels, |  | routers and hosts (clients, servers, proxies, gateways, tunnels, |
| or caches), and memory used for TCP protocol control blocks can be |  | or caches), and memory used for TCP protocol control blocks can be |
| saved in hosts. |  | saved in hosts. |
| o HTTP requests and responses can be pipelined on a connection. |  | o HTTP requests and responses can be pipelined on a connection. |
| Pipelining allows a client to make multiple requests without |  | Pipelining allows a client to make multiple requests without |
| skipping to change at page 33, line 39 |  | skipping to change at page 34, line 29 |
| It is especially important that proxies correctly implement the |  | It is especially important that proxies correctly implement the |
| properties of the Connection header field as specified in |  | properties of the Connection header field as specified in |
| Section 8.1. |  | Section 8.1. |
| The proxy server MUST signal persistent connections separately with |  | The proxy server MUST signal persistent connections separately with |
| its clients and the origin servers (or other proxy servers) that it |  | its clients and the origin servers (or other proxy servers) that it |
| connects to. Each persistent connection applies to only one |  | connects to. Each persistent connection applies to only one |
| transport link. |  | transport link. |
| A proxy server MUST NOT establish a HTTP/1.1 persistent connection |  | A proxy server MUST NOT establish a HTTP/1.1 persistent connection |
| with an HTTP/1.0 client (but see [RFC2068] for information and |  | with an HTTP/1.0 client (but see Section 19.7.1 of [RFC2068] for |
| discussion of the problems with the Keep-Alive header implemented by |  | information and discussion of the problems with the Keep-Alive header |
| many HTTP/1.0 clients). |  | implemented by many HTTP/1.0 clients). |
| 7.1.4. Practical Considerations |  | 7.1.4. Practical Considerations |
| Servers will usually have some time-out value beyond which they will |  | Servers will usually have some time-out value beyond which they will |
| no longer maintain an inactive connection. Proxy servers might make |  | no longer maintain an inactive connection. Proxy servers might make |
| this a higher value since it is likely that the client will be making |  | this a higher value since it is likely that the client will be making |
| more connections through the same server. The use of persistent |  | more connections through the same server. The use of persistent |
| connections places no requirements on the length (or existence) of |  | connections places no requirements on the length (or existence) of |
| this time-out for either the client or the server. |  | this time-out for either the client or the server. |
| skipping to change at page 39, line 20 |  | skipping to change at page 40, line 10 |
| A system receiving an HTTP/1.0 (or lower-version) message that |  | A system receiving an HTTP/1.0 (or lower-version) message that |
| includes a Connection header MUST, for each connection-token in this |  | includes a Connection header MUST, for each connection-token in this |
| field, remove and ignore any header field(s) from the message with |  | field, remove and ignore any header field(s) from the message with |
| the same name as the connection-token. This protects against |  | the same name as the connection-token. This protects against |
| mistaken forwarding of such header fields by pre-HTTP/1.1 proxies. |  | mistaken forwarding of such header fields by pre-HTTP/1.1 proxies. |
| See Appendix B.2. |  | See Appendix B.2. |
| 8.2. Content-Length |  | 8.2. Content-Length |
| The entity-header field "Content-Length" indicates the size of the |  | The entity-header field "Content-Length" indicates the size of the |
| entity-body, in decimal number of OCTETs, sent to the recipient or, |  | entity-body, in number of OCTETs, sent to the recipient or, in the |
| in the case of the HEAD method, the size of the entity-body that |  | case of the HEAD method, the size of the entity-body that would have |
| would have been sent had the request been a GET. |  | been sent had the request been a GET. |
| Content-Length = "Content-Length" ":" OWS 1*Content-Length-v |  | Content-Length = "Content-Length" ":" OWS 1*Content-Length-v |
| Content-Length-v = 1*DIGIT |  | Content-Length-v = 1*DIGIT |
| An example is |  | An example is |
| Content-Length: 3495 |  | Content-Length: 3495 |
| Applications SHOULD use this field to indicate the transfer-length of |  | Applications SHOULD use this field to indicate the transfer-length of |
| the message-body, unless this is prohibited by the rules in |  | the message-body, unless this is prohibited by the rules in |
| skipping to change at page 39, line 51 |  | skipping to change at page 40, line 41 |
| used within the "message/external-body" content-type. In HTTP, it |  | used within the "message/external-body" content-type. In HTTP, it |
| SHOULD be sent whenever the message's length can be determined prior |  | SHOULD be sent whenever the message's length can be determined prior |
| to being transferred, unless this is prohibited by the rules in |  | to being transferred, unless this is prohibited by the rules in |
| Section 4.4. |  | Section 4.4. |
| 8.3. Date |  | 8.3. Date |
| The general-header field "Date" represents the date and time at which |  | The general-header field "Date" represents the date and time at which |
| the message was originated, having the same semantics as orig-date in |  | the message was originated, having the same semantics as orig-date in |
| Section 3.6.1 of [RFC5322]. The field value is an HTTP-date, as |  | Section 3.6.1 of [RFC5322]. The field value is an HTTP-date, as |
| described in Section 3.2.1; it MUST be sent in rfc1123-date format. |  | described in Section 3.2; it MUST be sent in rfc1123-date format. |
| Date = "Date" ":" OWS Date-v |  | Date = "Date" ":" OWS Date-v |
| Date-v = HTTP-date |  | Date-v = HTTP-date |
| An example is |  | An example is |
| Date: Tue, 15 Nov 1994 08:12:31 GMT |  | Date: Tue, 15 Nov 1994 08:12:31 GMT |
| Origin servers MUST include a Date header field in all responses, |  | Origin servers MUST include a Date header field in all responses, |
| except in these cases: |  | except in these cases: |
| skipping to change at page 53, line 45 |  | skipping to change at page 54, line 37 |
| [ISO-8859-1] |  | [ISO-8859-1] |
| International Organization for Standardization, |  | International Organization for Standardization, |
| "Information technology -- 8-bit single-byte coded graphic |  | "Information technology -- 8-bit single-byte coded graphic |
| character sets -- Part 1: Latin alphabet No. 1", ISO/ |  | character sets -- Part 1: Latin alphabet No. 1", ISO/ |
| IEC 8859-1:1998, 1998. |  | IEC 8859-1:1998, 1998. |
| [Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |  | [Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |
| Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |  | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |
| and J. Reschke, Ed., "HTTP/1.1, part 2: Message |  | and J. Reschke, Ed., "HTTP/1.1, part 2: Message |
| Semantics", draft-ietf-httpbis-p2-semantics-06 (work in |  | Semantics", draft-ietf-httpbis-p2-semantics-07 (work in |
| progress), March 2009. |  | progress), July 2009. |
| [Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |  | [Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |
| Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |  | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |
| and J. Reschke, Ed., "HTTP/1.1, part 3: Message Payload |  | and J. Reschke, Ed., "HTTP/1.1, part 3: Message Payload |
| and Content Negotiation", draft-ietf-httpbis-p3-payload-06 |  | and Content Negotiation", draft-ietf-httpbis-p3-payload-07 |
| (work in progress), March 2009. |  | (work in progress), July 2009. |
| [Part5] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |  | [Part5] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |
| Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |  | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |
| and J. Reschke, Ed., "HTTP/1.1, part 5: Range Requests and |  | and J. Reschke, Ed., "HTTP/1.1, part 5: Range Requests and |
| Partial Responses", draft-ietf-httpbis-p5-range-06 (work |  | Partial Responses", draft-ietf-httpbis-p5-range-07 (work |
| in progress), March 2009. |  | in progress), July 2009. |
| [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |  | [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., |
| Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |  | Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., |
| and J. Reschke, Ed., "HTTP/1.1, part 6: Caching", |  | Nottingham, M., Ed., and J. Reschke, Ed., "HTTP/1.1, part |
| draft-ietf-httpbis-p6-cache-06 (work in progress), |  | 6: Caching", draft-ietf-httpbis-p6-cache-07 (work in |
| March 2009. |  | progress), July 2009. |
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate |  | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate |
| Requirement Levels", BCP 14, RFC 2119, March 1997. |  | Requirement Levels", BCP 14, RFC 2119, March 1997. |
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform |  | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform |
| Resource Identifier (URI): Generic Syntax", RFC 3986, |  | Resource Identifier (URI): Generic Syntax", RFC 3986, |
| STD 66, January 2005. |  | STD 66, January 2005. |
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax |  | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax |
| Specifications: ABNF", STD 68, RFC 5234, January 2008. |  | Specifications: ABNF", STD 68, RFC 5234, January 2008. |
| skipping to change at page 59, line 35 |  | skipping to change at page 60, line 23 |
| However, talking to proxies is the most important use of persistent |  | However, talking to proxies is the most important use of persistent |
| connections, so that prohibition is clearly unacceptable. Therefore, |  | connections, so that prohibition is clearly unacceptable. Therefore, |
| we need some other mechanism for indicating a persistent connection |  | we need some other mechanism for indicating a persistent connection |
| is desired, which is safe to use even when talking to an old proxy |  | is desired, which is safe to use even when talking to an old proxy |
| that ignores Connection. Persistent connections are the default for |  | that ignores Connection. Persistent connections are the default for |
| HTTP/1.1 messages; we introduce a new keyword (Connection: close) for |  | HTTP/1.1 messages; we introduce a new keyword (Connection: close) for |
| declaring non-persistence. See Section 8.1. |  | declaring non-persistence. See Section 8.1. |
| The original HTTP/1.0 form of persistent connections (the Connection: |  | The original HTTP/1.0 form of persistent connections (the Connection: |
| Keep-Alive and Keep-Alive header) is documented in [RFC2068]. |  | Keep-Alive and Keep-Alive header) is documented in Section 19.7.1 of |
|  |  | [RFC2068]. |
| B.3. Changes from RFC 2068 |  | B.3. Changes from RFC 2068 |
| This specification has been carefully audited to correct and |  | This specification has been carefully audited to correct and |
| disambiguate key word usage; RFC 2068 had many problems in respect to |  | disambiguate key word usage; RFC 2068 had many problems in respect to |
| the conventions laid out in [RFC2119]. |  | the conventions laid out in [RFC2119]. |
| Transfer-coding and message lengths all interact in ways that |  | Transfer-coding and message lengths all interact in ways that |
| required fixing exactly when chunked encoding is used (to allow for |  | required fixing exactly when chunked encoding is used (to allow for |
| transfer encoding that may not be self delimiting); it was important |  | transfer encoding that may not be self delimiting); it was important |
| skipping to change at page 64, line 20 |  | skipping to change at page 65, line 9 |
| Chunked-Body = *chunk last-chunk trailer-part CRLF |  | Chunked-Body = *chunk last-chunk trailer-part CRLF |
| Connection = "Connection:" OWS Connection-v |  | Connection = "Connection:" OWS Connection-v |
| Connection-v = *( "," OWS ) connection-token *( OWS "," [ OWS |  | Connection-v = *( "," OWS ) connection-token *( OWS "," [ OWS |
| connection-token ] ) |  | connection-token ] ) |
| Content-Length = "Content-Length:" OWS 1*Content-Length-v |  | Content-Length = "Content-Length:" OWS 1*Content-Length-v |
| Content-Length-v = 1*DIGIT |  | Content-Length-v = 1*DIGIT |
| Date = "Date:" OWS Date-v |  | Date = "Date:" OWS Date-v |
| Date-v = HTTP-date |  | Date-v = HTTP-date |
| GMT = %x47.4D.54 |  | GMT = %x47.4D.54 ; GMT |
| HTTP-Prot-Name = %x48.54.54.50 |  | HTTP-Prot-Name = %x48.54.54.50 ; HTTP |
| HTTP-Version = HTTP-Prot-Name "/" 1*DIGIT "." 1*DIGIT |  | HTTP-Version = HTTP-Prot-Name "/" 1*DIGIT "." 1*DIGIT |
| HTTP-date = rfc1123-date / obsolete-date |  | HTTP-date = rfc1123-date / obs-date |
| HTTP-message = Request / Response |  | HTTP-message = Request / Response |
| Host = "Host:" OWS Host-v |  | Host = "Host:" OWS Host-v |
| Host-v = uri-host [ ":" port ] |  | Host-v = uri-host [ ":" port ] |
| Method = token |  | Method = token |
| OWS = *( [ obs-fold ] WSP ) |  | OWS = *( [ obs-fold ] WSP ) |
| Pragma = <Pragma, defined in [Part6], Section 3.4> |  | Pragma = <Pragma, defined in [Part6], Section 3.4> |
| skipping to change at page 65, line 4 |  | skipping to change at page 65, line 42 |
| 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 |
| TE = "TE:" OWS TE-v |  | TE = "TE:" OWS TE-v |
| TE-v = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ] |  | TE-v = [ ( "," / t-codings ) *( OWS "," [ OWS t-codings ] ) ] |
| Trailer = "Trailer:" OWS Trailer-v |  | Trailer = "Trailer:" OWS Trailer-v |
| Trailer-v = *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) |  | Trailer-v = *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) |
| Transfer-Encoding = "Transfer-Encoding:" OWS Transfer-Encoding-v |  | Transfer-Encoding = "Transfer-Encoding:" OWS Transfer-Encoding-v |
| Transfer-Encoding-v = *( "," OWS ) transfer-coding *( OWS "," [ OWS |  | Transfer-Encoding-v = *( "," OWS ) transfer-coding *( OWS "," [ OWS |
| transfer-coding ] ) |  | transfer-coding ] ) |
| URI = <URI, defined in [RFC3986], Section 3> |  | URI = <URI, defined in [RFC3986], Section 3> |
| URI-reference = <URI-reference, defined in [RFC3986], Section 4.1> |  | URI-reference = <URI-reference, defined in [RFC3986], Section 4.1> |
| Upgrade = "Upgrade:" OWS Upgrade-v |  | Upgrade = "Upgrade:" OWS Upgrade-v |
| Upgrade-v = *( "," OWS ) product *( OWS "," [ OWS product ] ) |  | Upgrade-v = *( "," OWS ) product *( OWS "," [ OWS product ] ) |
| Via = "Via:" OWS Via-v |  | Via = "Via:" OWS Via-v |
| Via-v = *( "," OWS ) received-protocol RWS received-by [ RWS comment |  | Via-v = *( "," OWS ) received-protocol RWS received-by [ RWS comment |
| ] *( OWS "," [ OWS received-protocol RWS received-by [ RWS comment ] |  | ] *( OWS "," [ OWS received-protocol RWS received-by [ RWS comment ] |
| ] ) |  | ] ) |
| Warning = <Warning, defined in [Part6], Section 3.6> |  | Warning = <Warning, defined in [Part6], Section 3.6> |
| absolute-URI = <absolute-URI, defined in [RFC3986], Section 4.3> |  | absolute-URI = <absolute-URI, defined in [RFC3986], Section 4.3> |
| asctime-date = wkday SP date3 SP time SP 4DIGIT |  | asctime-date = day-name SP date3 SP time-of-day SP year |
| attribute = token |  | attribute = token |
| authority = <authority, defined in [RFC3986], Section 3.2> |  | authority = <authority, defined in [RFC3986], Section 3.2> |
| chunk = chunk-size *WSP [ chunk-ext ] CRLF chunk-data CRLF |  | chunk = chunk-size *WSP [ chunk-ext ] CRLF chunk-data CRLF |
| chunk-data = 1*OCTET |  | chunk-data = 1*OCTET |
| chunk-ext = *( ";" *WSP chunk-ext-name [ "=" chunk-ext-val ] *WSP ) |  | chunk-ext = *( ";" *WSP chunk-ext-name [ "=" chunk-ext-val ] *WSP ) |
| chunk-ext-name = token |  | chunk-ext-name = token |
| chunk-ext-val = token / quoted-string |  | chunk-ext-val = token / quoted-string |
| chunk-size = 1*HEXDIG |  | chunk-size = 1*HEXDIG |
| comment = "(" *( ctext / quoted-pair / comment ) ")" |  | comment = "(" *( ctext / quoted-pair / comment ) ")" |
| connection-token = token |  | connection-token = token |
| ctext = *( OWS / %x21-27 / %x2A-7E / obs-text ) |  | ctext = OWS / %x21-27 ; '!'-''' |
|  |  | / %x2A-5B ; '*'-'[' |
|  |  | / %x5D-7E ; ']'-'~' |
|  |  | / obs-text |
| date1 = 2DIGIT SP month SP 4DIGIT |  | date1 = day SP month SP year |
| date2 = 2DIGIT "-" month "-" 2DIGIT |  | date2 = day "-" month "-" 2DIGIT |
| date3 = month SP ( 2DIGIT / ( SP DIGIT ) ) |  | date3 = month SP ( 2DIGIT / ( SP DIGIT ) ) |
|  |  | day = 2DIGIT |
|  |  | day-name = %x4D.6F.6E ; Mon |
|  |  | / %x54.75.65 ; Tue |
|  |  | / %x57.65.64 ; Wed |
|  |  | / %x54.68.75 ; Thu |
|  |  | / %x46.72.69 ; Fri |
|  |  | / %x53.61.74 ; Sat |
|  |  | / %x53.75.6E ; Sun |
|  |  | day-name-l = %x4D.6F.6E.64.61.79 ; Monday |
|  |  | / %x54.75.65.73.64.61.79 ; Tuesday |
|  |  | / %x57.65.64.6E.65.73.64.61.79 ; Wednesday |
|  |  | / %x54.68.75.72.73.64.61.79 ; Thursday |
|  |  | / %x46.72.69.64.61.79 ; Friday |
|  |  | / %x53.61.74.75.72.64.61.79 ; Saturday |
|  |  | / %x53.75.6E.64.61.79 ; Sunday |
| entity-body = <entity-body, defined in [Part3], Section 3.2> |  | entity-body = <entity-body, defined in [Part3], Section 3.2> |
| entity-header = <entity-header, defined in [Part3], Section 3.1> |  | entity-header = <entity-header, defined in [Part3], Section 3.1> |
| field-content = *( WSP / VCHAR / obs-text ) |  | field-content = *( WSP / VCHAR / obs-text ) |
| field-name = token |  | field-name = token |
| field-value = *( field-content / OWS ) |  | field-value = *( field-content / OWS ) |
| fragment = <fragment, defined in [RFC3986], Section 3.5> |  | fragment = <fragment, defined in [RFC3986], Section 3.5> |
| general-header = Cache-Control / Connection / Date / Pragma / Trailer |  | general-header = Cache-Control / Connection / Date / Pragma / Trailer |
| / Transfer-Encoding / Upgrade / Via / Warning |  | / Transfer-Encoding / Upgrade / Via / Warning |
| generic-message = start-line *( message-header CRLF ) CRLF [ |  | generic-message = start-line *( message-header CRLF ) CRLF [ |
| message-body ] |  | message-body ] |
|  |  | hour = 2DIGIT |
| http-URI = "http://" authority path-abempty [ "?" query ] |  | http-URI = "http://" authority path-abempty [ "?" query ] |
| l-Fri = %x46.72.69.64.61.79 |  |  |
| l-Mon = %x4D.6F.6E.64.61.79 |  |  |
| l-Sat = %x53.61.74.75.72.64.61.79 |  |  |
| l-Sun = %x53.75.6E.64.61.79 |  |  |
| l-Thu = %x54.68.75.72.73.64.61.79 |  |  |
| l-Tue = %x54.75.65.73.64.61.79 |  |  |
| l-Wed = %x57.65.64.6E.65.73.64.61.79 |  |  |
| last-chunk = 1*"0" *WSP [ chunk-ext ] CRLF |  | last-chunk = 1*"0" *WSP [ chunk-ext ] CRLF |
| message-body = entity-body / |  | message-body = entity-body / |
| <entity-body encoded as per Transfer-Encoding> |  | <entity-body encoded as per Transfer-Encoding> |
| message-header = field-name ":" OWS [ field-value ] OWS |  | message-header = field-name ":" OWS [ field-value ] OWS |
| month = s-Jan / s-Feb / s-Mar / s-Apr / s-May / s-Jun / s-Jul / s-Aug |  | minute = 2DIGIT |
| / s-Sep / s-Oct / s-Nov / s-Dec |  | month = %x4A.61.6E ; Jan |
|  |  | / %x46.65.62 ; Feb |
|  |  | / %x4D.61.72 ; Mar |
|  |  | / %x41.70.72 ; Apr |
|  |  | / %x4D.61.79 ; May |
|  |  | / %x4A.75.6E ; Jun |
|  |  | / %x4A.75.6C ; Jul |
|  |  | / %x41.75.67 ; Aug |
|  |  | / %x53.65.70 ; Sep |
|  |  | / %x4F.63.74 ; Oct |
|  |  | / %x4E.6F.76 ; Nov |
|  |  | / %x44.65.63 ; Dec |
|  |  | obs-date = rfc850-date / asctime-date |
| obs-fold = CRLF |  | obs-fold = CRLF |
| obs-text = %x80-FF |  | obs-text = %x80-FF |
| obsolete-date = rfc850-date / asctime-date |  |  |
| parameter = attribute BWS "=" BWS value |  |  |
| partial-URI = relative-part [ "?" query ] |  | partial-URI = relative-part [ "?" query ] |
| path-abempty = <path-abempty, defined in [RFC3986], Section 3.3> |  | path-abempty = <path-abempty, defined in [RFC3986], Section 3.3> |
| path-absolute = <path-absolute, defined in [RFC3986], Section 3.3> |  | path-absolute = <path-absolute, defined in [RFC3986], Section 3.3> |
| port = <port, defined in [RFC3986], Section 3.2.3> |  | port = <port, defined in [RFC3986], Section 3.2.3> |
| product = token [ "/" product-version ] |  | product = token [ "/" product-version ] |
| product-version = token |  | product-version = token |
| protocol-name = token |  | protocol-name = token |
| protocol-version = token |  | protocol-version = token |
| pseudonym = token |  | pseudonym = token |
| qdtext = *( OWS / "!" / %x23-5B / %x5D-7E / obs-text ) |  | qdtext = OWS / "!" / %x23-5B ; '#'-'[' |
|  |  | / %x5D-7E ; ']'-'~' |
|  |  | / obs-text |
| query = <query, defined in [RFC3986], Section 3.4> |  | query = <query, defined in [RFC3986], Section 3.4> |
| quoted-pair = "\" quoted-text |  | quoted-pair = "\" quoted-text |
| quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE |  | quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE |
| quoted-text = %x01-09 / %x0B-0C / %x0E-FF |  | quoted-text = %x01-09 / %x0B-0C / %x0E-FF |
| qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] ) |  | qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] ) |
| received-by = ( uri-host [ ":" port ] ) / pseudonym |  | received-by = ( uri-host [ ":" port ] ) / pseudonym |
| received-protocol = [ protocol-name "/" ] protocol-version |  | received-protocol = [ protocol-name "/" ] protocol-version |
| relative-part = <relative-part, defined in [RFC3986], Section 4.2> |  | relative-part = <relative-part, defined in [RFC3986], Section 4.2> |
| request-header = <request-header, defined in [Part2], Section 3> |  | request-header = <request-header, defined in [Part2], Section 3> |
| request-target = "*" / absolute-URI / ( path-absolute [ "?" query ] ) |  | request-target = "*" / absolute-URI / ( path-absolute [ "?" query ] ) |
| / authority |  | / authority |
| response-header = <response-header, defined in [Part2], Section 5> |  | response-header = <response-header, defined in [Part2], Section 5> |
| rfc1123-date = wkday "," SP date1 SP time SP GMT |  | rfc1123-date = day-name "," SP date1 SP time-of-day SP GMT |
| rfc850-date = weekday "," SP date2 SP time SP GMT |  | rfc850-date = day-name-l "," SP date2 SP time-of-day SP GMT |
| s-Apr = %x41.70.72 |  | second = 2DIGIT |
| s-Aug = %x41.75.67 |  |  |
| s-Dec = %x44.65.63 |  |  |
| s-Feb = %x46.65.62 |  |  |
| s-Fri = %x46.72.69 |  |  |
| s-Jan = %x4A.61.6E |  |  |
| s-Jul = %x4A.75.6C |  |  |
| s-Jun = %x4A.75.6E |  |  |
| s-Mar = %x4D.61.72 |  |  |
| s-May = %x4D.61.79 |  |  |
| s-Mon = %x4D.6F.6E |  |  |
| s-Nov = %x4E.6F.76 |  |  |
| s-Oct = %x4F.63.74 |  |  |
| s-Sat = %x53.61.74 |  |  |
| s-Sep = %x53.65.70 |  |  |
| s-Sun = %x53.75.6E |  |  |
| s-Thu = %x54.68.75 |  |  |
| s-Tue = %x54.75.65 |  |  |
| s-Wed = %x57.65.64 |  |  |
| start-line = Request-Line / Status-Line |  | start-line = Request-Line / Status-Line |
| t-codings = "trailers" / ( transfer-extension [ te-params ] ) |  | t-codings = "trailers" / ( transfer-extension [ te-params ] ) |
| tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / |  | tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / |
| "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA |  | "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA |
| te-ext = OWS ";" OWS token [ "=" ( token / quoted-string ) ] |  | te-ext = OWS ";" OWS token [ "=" ( token / quoted-string ) ] |
| te-params = OWS ";" OWS "q=" qvalue *te-ext |  | te-params = OWS ";" OWS "q=" qvalue *te-ext |
| time = 2DIGIT ":" 2DIGIT ":" 2DIGIT |  | time-of-day = hour ":" minute ":" second |
| token = 1*tchar |  | token = 1*tchar |
| trailer-part = *( entity-header CRLF ) |  | trailer-part = *( entity-header CRLF ) |
| transfer-coding = "chunked" / transfer-extension |  | transfer-coding = "chunked" / transfer-extension |
| transfer-extension = token *( OWS ";" OWS parameter ) |  | transfer-extension = token *( OWS ";" OWS transfer-parameter ) |
|  |  | transfer-parameter = attribute BWS "=" BWS value |
| uri-host = <host, defined in [RFC3986], Section 3.2.2> |  | uri-host = <host, defined in [RFC3986], Section 3.2.2> |
| value = token / quoted-string |  | value = token / quoted-string |
| weekday = l-Mon / l-Tue / l-Wed / l-Thu / l-Fri / l-Sat / l-Sun |  | year = 4DIGIT |
| wkday = s-Mon / s-Tue / s-Wed / s-Thu / s-Fri / s-Sat / s-Sun |  |  |
| ABNF diagnostics: |  | ABNF diagnostics: |
| ; Chunked-Body defined but not used |  | ; Chunked-Body defined but not used |
| ; Content-Length defined but not used |  | ; Content-Length defined but not used |
| ; HTTP-message defined but not used |  | ; HTTP-message defined but not used |
| ; Host defined but not used |  | ; Host defined but not used |
| ; TE defined but not used |  | ; TE defined but not used |
| ; URI defined but not used |  | ; URI defined but not used |
| ; URI-reference defined but not used |  | ; URI-reference defined but not used |
| ; fragment defined but not used |  | ; fragment defined but not used |
| skipping to change at page 73, line 33 |  | skipping to change at page 74, line 11 |
| o Add appendix containing collected and expanded ABNF. |  | o Add appendix containing collected and expanded ABNF. |
| Other changes: |  | Other changes: |
| o Rewrite introduction; add mostly new Architecture Section. |  | o Rewrite introduction; add mostly new Architecture Section. |
| o Move definition of quality values from Part 3 into Part 1; make TE |  | o Move definition of quality values from Part 3 into Part 1; make TE |
| request header grammar independent of accept-params (defined in |  | request header grammar independent of accept-params (defined in |
| Part 3). |  | Part 3). |
|  |  | E.8. Since draft-ietf-httpbis-p1-messaging-06 |
|  |  | Closed issues: |
|  |  | o <http://tools.ietf.org/wg/httpbis/trac/ticket/161>: "base for |
|  |  | numeric protocol elements" |
|  |  | o <http://tools.ietf.org/wg/httpbis/trac/ticket/162>: "comment ABNF" |
|  |  | Partly resolved issues: |
|  |  | o <http://tools.ietf.org/wg/httpbis/trac/ticket/88>: "205 Bodies" |
|  |  | (took out language that implied that there may be methods for |
|  |  | which a request body MUST NOT be included) |
|  |  | o <http://tools.ietf.org/wg/httpbis/trac/ticket/163>: "editorial |
|  |  | improvements around HTTP-date" |
| Index |  | Index |
| A |  | A |
| application/http Media Type 48 |  | application/http Media Type 49 |
| C |  | C |
| cache 61 |  | cache 61 |
| cacheable 61 |  | cacheable 62 |
| client 61 |  | client 62 |
| connection 61 |  | connection 62 |
| Connection header 38 |  | Connection header 39 |
| content negotiation 61 |  | content negotiation 62 |
| Content-Length header 39 |  | Content-Length header 40 |
| D |  | D |
| Date header 39 |  | Date header 40 |
| downstream 63 |  | downstream 64 |
| E |  | E |
| entity 61 |  | entity 62 |
| G |  | G |
| gateway 61 |  | gateway 62 |
| Grammar |  | Grammar |
| absolute-URI 10 |  | absolute-URI 10 |
| ALPHA 7 |  | ALPHA 7 |
| asctime-date 16 |  | asctime-date 18 |
| attribute 17 |  | attribute 18 |
| authority 10 |  | authority 10 |
| BWS 9 |  | BWS 9 |
| chunk 19 |  | chunk 20 |
| chunk-data 19 |  | chunk-data 20 |
| chunk-ext 19 |  | chunk-ext 20 |
| chunk-ext-name 19 |  | chunk-ext-name 20 |
| chunk-ext-val 19 |  | chunk-ext-val 20 |
| chunk-size 19 |  | chunk-size 20 |
| Chunked-Body 19 |  | Chunked-Body 20 |
| comment 23 |  | comment 24 |
| Connection 38 |  | Connection 39 |
| connection-token 38 |  | connection-token 39 |
| Connection-v 38 |  | Connection-v 39 |
| Content-Length 39 |  | Content-Length 40 |
| Content-Length-v 39 |  | Content-Length-v 40 |
| CR 7 |  | CR 7 |
| CRLF 7 |  | CRLF 7 |
| ctext 23 |  | ctext 24 |
| CTL 7 |  | CTL 7 |
| Date 40 |  | Date 40 |
| Date-v 40 |  | Date-v 40 |
| date1 16 |  | date1 17 |
| date2 16 |  | date2 18 |
| date3 16 |  | date3 18 |
|  |  | day 17 |
|  |  | day-name 17 |
|  |  | day-name-l 17 |
| DIGIT 7 |  | DIGIT 7 |
| DQUOTE 7 |  | DQUOTE 7 |
| extension-code 31 |  | extension-code 31 |
| extension-method 27 |  | extension-method 28 |
| field-content 22 |  | field-content 23 |
| field-name 22 |  | field-name 23 |
| field-value 22 |  | field-value 23 |
| general-header 26 |  | general-header 27 |
| generic-message 21 |  | generic-message 22 |
|  |  | GMT 17 |
| HEXDIG 7 |  | HEXDIG 7 |
| Host 41 |  | Host 42 |
| Host-v 41 |  | Host-v 42 |
|  |  | hour 17 |
| HTTP-date 16 |  | HTTP-date 16 |
| HTTP-message 21 |  | HTTP-message 22 |
| HTTP-Prot-Name 14 |  | HTTP-Prot-Name 14 |
| http-URI 11 |  | http-URI 11 |
| HTTP-Version 14 |  | HTTP-Version 14 |
| last-chunk 19 |  | last-chunk 20 |
| LF 7 |  | LF 7 |
| message-body 23 |  | message-body 25 |
| message-header 22 |  | message-header 23 |
| Method 27 |  | Method 28 |
| month 16 |  | minute 17 |
|  |  | month 17 |
|  |  | obs-date 17 |
| obs-text 9 |  | obs-text 9 |
| obsolete-date 16 |  |  |
| OCTET 7 |  | OCTET 7 |
| OWS 9 |  | OWS 9 |
| parameter 17 |  |  |
| path-absolute 10 |  | path-absolute 10 |
| port 10 |  | port 10 |
| product 20 |  | product 21 |
| product-version 20 |  | product-version 21 |
| protocol-name 45 |  | protocol-name 46 |
| protocol-version 45 |  | protocol-version 46 |
| pseudonym 45 |  | pseudonym 46 |
| qdtext 9 |  | qdtext 9 |
| query 10 |  | query 10 |
| quoted-pair 9 |  | quoted-pair 9 |
| quoted-string 9 |  | quoted-string 9 |
| quoted-text 9 |  | quoted-text 9 |
| qvalue 21 |  | qvalue 22 |
| Reason-Phrase 31 |  | Reason-Phrase 31 |
| received-by 45 |  | received-by 46 |
| received-protocol 45 |  | received-protocol 46 |
| Request 26 |  | Request 27 |
| Request-Line 27 |  | Request-Line 28 |
| request-target 27 |  | request-target 28 |
| Response 30 |  | Response 31 |
| rfc850-date 16 |  | rfc850-date 18 |
| rfc1123-date 16 |  | rfc1123-date 17 |
| RWS 9 |  | RWS 9 |
|  |  | second 17 |
| SP 7 |  | SP 7 |
| start-line 21 |  | start-line 22 |
| Status-Code 31 |  | Status-Code 31 |
| Status-Line 30 |  | Status-Line 31 |
| t-codings 42 |  | t-codings 42 |
| tchar 9 |  | tchar 9 |
| TE 42 |  | TE 42 |
| te-ext 42 |  | te-ext 42 |
| te-params 42 |  | te-params 42 |
| TE-v 42 |  | TE-v 42 |
| time 16 |  | time-of-day 17 |
| token 9 |  | token 9 |
| Trailer 43 |  | Trailer 44 |
| trailer-part 19 |  | trailer-part 20 |
| Trailer-v 43 |  | Trailer-v 44 |
| transfer-coding 17 |  | transfer-coding 18 |
| Transfer-Encoding 44 |  | Transfer-Encoding 44 |
| Transfer-Encoding-v 44 |  | Transfer-Encoding-v 44 |
| transfer-extension 17 |  | transfer-extension 18 |
| Upgrade 44 |  | transfer-parameter 18 |
| Upgrade-v 44 |  | Upgrade 45 |
|  |  | Upgrade-v 45 |
| uri-host 10 |  | uri-host 10 |
| URI-reference 10 |  | URI-reference 10 |
| value 17 |  | value 18 |
| VCHAR 7 |  | VCHAR 7 |
| Via 45 |  | Via 46 |
| Via-v 45 |  | Via-v 46 |
| weekday 16 |  |  |
| wkday 16 |  |  |
| WSP 7 |  | WSP 7 |
|  |  | year 17 |
| H |  | H |
| Headers |  | Headers |
| Connection 38 |  | Connection 39 |
| Content-Length 39 |  | Content-Length 40 |
| Date 39 |  | Date 40 |
| Host 41 |  | Host 42 |
| TE 42 |  | TE 42 |
| Trailer 43 |  | Trailer 44 |
| Transfer-Encoding 43 |  | Transfer-Encoding 44 |
| Upgrade 44 |  | Upgrade 45 |
| Via 45 |  | Via 46 |
| Host header 41 |  | Host header 42 |
| http URI scheme 11 |  | http URI scheme 11 |
| https URI scheme 11 |  | https URI scheme 11 |
| I |  | I |
| inbound 62 |  | inbound 62 |
| M |  | M |
| Media Type |  | Media Type |
| application/http 48 |  | application/http 49 |
| message/http 47 |  | message/http 48 |
| message 62 |  | message 63 |
| message/http Media Type 47 |  | message/http Media Type 48 |
| O |  | O |
| origin server 62 |  | origin server 63 |
| outbound 62 |  | outbound 62 |
| P |  | P |
| proxy 62 |  | proxy 63 |
| R |  | R |
| representation 63 |  | representation 63 |
| request 62 |  | request 63 |
| resource 62 |  | resource 63 |
| response 62 |  | response 63 |
| S |  | S |
| server 63 |  | server 64 |
| T |  | T |
| TE header 42 |  | TE header 42 |
| Trailer header 43 |  | Trailer header 44 |
| Transfer-Encoding header 43 |  | Transfer-Encoding header 44 |
| tunnel 63 |  | tunnel 64 |
| U |  | U |
| Upgrade header 44 |  | Upgrade header 45 |
| upstream 63 |  | upstream 64 |
| URI scheme |  | URI scheme |
| http 11 |  | http 11 |
| https 11 |  | https 11 |
| user agent 63 |  | user agent 64 |
| V |  | V |
| variant 63 |  | variant 64 |
| Via header 45 |  | Via header 46 |
| Authors' Addresses |  | Authors' Addresses |
| Roy T. Fielding (editor) |  | Roy T. Fielding (editor) |
| Day Software |  | Day Software |
| 23 Corporate Plaza DR, Suite 280 |  | 23 Corporate Plaza DR, Suite 280 |
| Newport Beach, CA 92660 |  | Newport Beach, CA 92660 |
| USA |  | USA |
| Phone: +1-949-706-5300 |  | Phone: +1-949-706-5300 |
End of changes. 109 change blocks.
| 308 lines changed or deleted |  | 350 lines changed or added |
This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/