| draft-lafon-rfc2616bis-01.txt | | draft-lafon-rfc2616bis-02.txt | |
| | | | |
| Network Working Group R. Fielding | | Network Working Group R. Fielding | |
| Internet-Draft Day Software | | Internet-Draft Day Software | |
| Obsoletes: 2616 (if approved) J. Gettys | | Obsoletes: 2616 (if approved) J. Gettys | |
| Intended status: Standards Track J. Mogul | | Intended status: Standards Track J. Mogul | |
|
| Expires: April 25, 2007 HP | | Expires: May 23, 2007 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 | |
|
| October 22, 2006 | | November 19, 2006 | |
| | | | |
| Hypertext Transfer Protocol -- HTTP/1.1 | | Hypertext Transfer Protocol -- HTTP/1.1 | |
|
| draft-lafon-rfc2616bis-01 | | draft-lafon-rfc2616bis-02 | |
| | | | |
| Status of this Memo | | Status of this Memo | |
| | | | |
| By submitting this Internet-Draft, each author represents that any | | By submitting this Internet-Draft, each author represents that any | |
| applicable patent or other IPR claims of which he or she is aware | | applicable patent or other IPR claims of which he or she is aware | |
| have been or will be disclosed, and any of which he or she becomes | | have been or will be disclosed, and any of which he or she becomes | |
| aware will be disclosed, in accordance with Section 6 of BCP 79. | | aware will be disclosed, in accordance with Section 6 of BCP 79. | |
| | | | |
| Internet-Drafts are working documents of the Internet Engineering | | Internet-Drafts are working documents of the Internet Engineering | |
| Task Force (IETF), its areas, and its working groups. Note that | | Task Force (IETF), its areas, and its working groups. Note that | |
| | | | |
| skipping to change at page 1, line 48 | | skipping to change at page 1, line 48 | |
| 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 April 25, 2007. | | This Internet-Draft will expire on May 23, 2007. | |
| | | | |
| Copyright Notice | | Copyright Notice | |
| | | | |
| Copyright (C) The IETF Trust (2006). | | Copyright (C) The IETF Trust (2006). | |
| | | | |
| Abstract | | Abstract | |
| | | | |
| The Hypertext Transfer Protocol (HTTP) is an application-level | | The Hypertext Transfer Protocol (HTTP) is an application-level | |
| protocol for distributed, collaborative, hypermedia information | | protocol for distributed, collaborative, hypermedia information | |
| systems. It is a generic, stateless, protocol which can be used for | | systems. It is a generic, stateless, protocol which can be used for | |
| many tasks beyond its use for hypertext, such as name servers and | | many tasks beyond its use for hypertext, such as name servers and | |
| distributed object management systems, through extension of its | | distributed object management systems, through extension of its | |
|
| request methods, error codes and headers [47]. A feature of HTTP is | | request methods, error codes and headers [RFC2324]. A feature of | |
| the typing and negotiation of data representation, allowing systems | | HTTP is the typing and negotiation of data representation, allowing | |
| to be built independently of the data being transferred. | | systems to be built independently of the data being transferred. | |
| | | | |
| HTTP has been in use by the World-Wide Web global information | | HTTP has been in use by the World-Wide Web global information | |
| initiative since 1990. This specification defines the protocol | | initiative since 1990. This specification defines the protocol | |
| referred to as "HTTP/1.1", and is an update to RFC2616. | | referred to as "HTTP/1.1", and is an update to RFC2616. | |
| | | | |
| Editorial Note (To be removed by RFC Editor before publication) | | Editorial Note (To be removed by RFC Editor before publication) | |
| | | | |
| Distribution of this document is unlimited. Please send comments to | | Distribution of this document is unlimited. Please send comments to | |
| the Hypertext Transfer Protocol (HTTP) mailing list at | | the Hypertext Transfer Protocol (HTTP) mailing list at | |
|
| ietf-http-wg@w3.org [51], which may be joined by sending a message | | ietf-http-wg@w3.org [1], which may be joined by sending a message | |
| with subject "subscribe" to ietf-http-wg-request@w3.org [52]. | | with subject "subscribe" to ietf-http-wg-request@w3.org [2]. | |
| Discussions of the HTTP working group are archived at | | Discussions of the HTTP working group are archived at | |
| <http://lists.w3.org/Archives/Public/ietf-http-wg/>. XML versions, | | <http://lists.w3.org/Archives/Public/ietf-http-wg/>. XML versions, | |
| latest edits and the issues list for this document are available from | | latest edits and the issues list for this document are available from | |
|
| <http://www.w3.org/Protocols/HTTP/1.1/>. | | <http://www.w3.org/Protocols/HTTP/1.1/rfc2616bis/>. | |
| | | | |
|
| The purpose of this document is to revise RFC2616 ([50]), doing only | | The purpose of this document is to revise [RFC2616], doing only | |
| minimal corrections. For now, it is not planned to advance the | | minimal corrections. For now, it is not planned to advance the | |
| standards level of HTTP, thus - if published - the specification will | | standards level of HTTP, thus - if published - the specification will | |
|
| still be a "Proposed Standard" (see [46]). | | still be a "Proposed Standard" (see [RFC2026]). | |
| | | | |
| The current plan is to incorporate known errata, and to update the | | The current plan is to incorporate known errata, and to update the | |
| specification text according to the current IETF publication | | specification text according to the current IETF publication | |
| guidelines. In particular: | | guidelines. In particular: | |
| | | | |
| o Incorporate the corrections collected in the RFC2616 errata | | o Incorporate the corrections collected in the RFC2616 errata | |
| document (<http://purl.org/NET/http-errata>) (most of the | | document (<http://purl.org/NET/http-errata>) (most of the | |
| suggested fixes have been applied to draft 01). | | suggested fixes have been applied to draft 01). | |
| | | | |
| o Incorporate corrections for newly discovered and agreed-upon | | o Incorporate corrections for newly discovered and agreed-upon | |
|
| problems, using the HTTP WG mailing list as forum. | | problems, using the HTTP WG mailing list as forum and | |
| | | <http://www.w3.org/Protocols/HTTP/1.1/rfc2616bis/issues/> as | |
| | | issues list. | |
| | | | |
| o Update references, and re-classify them into "Normative" and | | o Update references, and re-classify them into "Normative" and | |
| "Informative", based on the prior work done by Jim Gettys in | | "Informative", based on the prior work done by Jim Gettys in | |
| <http://tools.ietf.org/html/draft-gettys-http-v11-spec-rev-00>. | | <http://tools.ietf.org/html/draft-gettys-http-v11-spec-rev-00>. | |
| | | | |
| This document is based on a variant of the original RFC2616 | | This document is based on a variant of the original RFC2616 | |
| specification formatted using Marshall T. Rose's "xml2rfc" tool (see | | specification formatted using Marshall T. Rose's "xml2rfc" tool (see | |
| <http://xml.resource.org>) and therefore deviates from the original | | <http://xml.resource.org>) and therefore deviates from the original | |
| text in word wrapping, page breaks, list formatting, reference | | text in word wrapping, page breaks, list formatting, reference | |
| formatting, whitespace usage and appendix numbering. Otherwise, it | | formatting, whitespace usage and appendix numbering. Otherwise, it | |
| is supposed to contain an accurate copy of the original specification | | is supposed to contain an accurate copy of the original specification | |
| text. See <http://www.w3.org/Protocols/HTTP/1.1/ | | text. See <http://www.w3.org/Protocols/HTTP/1.1/ | |
| rfc2616bis-00-from-rfc2616.diff.html> for a comparison between both | | rfc2616bis-00-from-rfc2616.diff.html> for a comparison between both | |
| documents, as generated by "rfcdiff" | | documents, as generated by "rfcdiff" | |
| (<http://tools.ietf.org/tools/rfcdiff/>). | | (<http://tools.ietf.org/tools/rfcdiff/>). | |
| | | | |
| Table of Contents | | Table of Contents | |
| | | | |
|
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 12 | | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 11 | |
| 1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . 12 | | 1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . 11 | |
| 1.2. Requirements . . . . . . . . . . . . . . . . . . . . . . 12 | | 1.2. Requirements . . . . . . . . . . . . . . . . . . . . . . 11 | |
| 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . 13 | | 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . 12 | |
| 1.4. Overall Operation . . . . . . . . . . . . . . . . . . . 17 | | 1.4. Overall Operation . . . . . . . . . . . . . . . . . . . 16 | |
| 2. Notational Conventions and Generic Grammar . . . . . . . . . 20 | | 2. Notational Conventions and Generic Grammar . . . . . . . . . 19 | |
| 2.1. Augmented BNF . . . . . . . . . . . . . . . . . . . . . 20 | | 2.1. Augmented BNF . . . . . . . . . . . . . . . . . . . . . 19 | |
| 2.2. Basic Rules . . . . . . . . . . . . . . . . . . . . . . 22 | | 2.2. Basic Rules . . . . . . . . . . . . . . . . . . . . . . 21 | |
| 3. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 24 | | 3. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 23 | |
| 3.1. HTTP Version . . . . . . . . . . . . . . . . . . . . . . 24 | | 3.1. HTTP Version . . . . . . . . . . . . . . . . . . . . . . 23 | |
| 3.2. Uniform Resource Identifiers . . . . . . . . . . . . . . 25 | | 3.2. Uniform Resource Identifiers . . . . . . . . . . . . . . 24 | |
| 3.2.1. General Syntax . . . . . . . . . . . . . . . . . . . 25 | | 3.2.1. General Syntax . . . . . . . . . . . . . . . . . . . 24 | |
| 3.2.2. http URL . . . . . . . . . . . . . . . . . . . . . . 26 | | 3.2.2. http URL . . . . . . . . . . . . . . . . . . . . . . 25 | |
| 3.2.3. URI Comparison . . . . . . . . . . . . . . . . . . . 26 | | 3.2.3. URI Comparison . . . . . . . . . . . . . . . . . . . 25 | |
| 3.3. Date/Time Formats . . . . . . . . . . . . . . . . . . . 27 | | 3.3. Date/Time Formats . . . . . . . . . . . . . . . . . . . 26 | |
| 3.3.1. Full Date . . . . . . . . . . . . . . . . . . . . . 27 | | 3.3.1. Full Date . . . . . . . . . . . . . . . . . . . . . 26 | |
| 3.3.2. Delta Seconds . . . . . . . . . . . . . . . . . . . 28 | | 3.3.2. Delta Seconds . . . . . . . . . . . . . . . . . . . 27 | |
| 3.4. Character Sets . . . . . . . . . . . . . . . . . . . . . 28 | | 3.4. Character Sets . . . . . . . . . . . . . . . . . . . . . 27 | |
| 3.4.1. Missing Charset . . . . . . . . . . . . . . . . . . 29 | | 3.4.1. Missing Charset . . . . . . . . . . . . . . . . . . 28 | |
| 3.5. Content Codings . . . . . . . . . . . . . . . . . . . . 30 | | 3.5. Content Codings . . . . . . . . . . . . . . . . . . . . 29 | |
| 3.6. Transfer Codings . . . . . . . . . . . . . . . . . . . . 31 | | 3.6. Transfer Codings . . . . . . . . . . . . . . . . . . . . 30 | |
| 3.6.1. Chunked Transfer Coding . . . . . . . . . . . . . . 32 | | 3.6.1. Chunked Transfer Coding . . . . . . . . . . . . . . 31 | |
| 3.7. Media Types . . . . . . . . . . . . . . . . . . . . . . 33 | | 3.7. Media Types . . . . . . . . . . . . . . . . . . . . . . 32 | |
| 3.7.1. Canonicalization and Text Defaults . . . . . . . . . 34 | | 3.7.1. Canonicalization and Text Defaults . . . . . . . . . 33 | |
| 3.7.2. Multipart Types . . . . . . . . . . . . . . . . . . 35 | | 3.7.2. Multipart Types . . . . . . . . . . . . . . . . . . 34 | |
| 3.8. Product Tokens . . . . . . . . . . . . . . . . . . . . . 35 | | 3.8. Product Tokens . . . . . . . . . . . . . . . . . . . . . 34 | |
| 3.9. Quality Values . . . . . . . . . . . . . . . . . . . . . 36 | | 3.9. Quality Values . . . . . . . . . . . . . . . . . . . . . 35 | |
| 3.10. Language Tags . . . . . . . . . . . . . . . . . . . . . 36 | | 3.10. Language Tags . . . . . . . . . . . . . . . . . . . . . 35 | |
| 3.11. Entity Tags . . . . . . . . . . . . . . . . . . . . . . 37 | | 3.11. Entity Tags . . . . . . . . . . . . . . . . . . . . . . 36 | |
| 3.12. Range Units . . . . . . . . . . . . . . . . . . . . . . 37 | | 3.12. Range Units . . . . . . . . . . . . . . . . . . . . . . 36 | |
| 4. HTTP Message . . . . . . . . . . . . . . . . . . . . . . . . 39 | | 4. HTTP Message . . . . . . . . . . . . . . . . . . . . . . . . 38 | |
| 4.1. Message Types . . . . . . . . . . . . . . . . . . . . . 39 | | 4.1. Message Types . . . . . . . . . . . . . . . . . . . . . 38 | |
| 4.2. Message Headers . . . . . . . . . . . . . . . . . . . . 39 | | 4.2. Message Headers . . . . . . . . . . . . . . . . . . . . 38 | |
| 4.3. Message Body . . . . . . . . . . . . . . . . . . . . . . 40 | | 4.3. Message Body . . . . . . . . . . . . . . . . . . . . . . 39 | |
| 4.4. Message Length . . . . . . . . . . . . . . . . . . . . . 41 | | 4.4. Message Length . . . . . . . . . . . . . . . . . . . . . 40 | |
| 4.5. General Header Fields . . . . . . . . . . . . . . . . . 42 | | 4.5. General Header Fields . . . . . . . . . . . . . . . . . 41 | |
| 5. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 | | 5. Request . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 | |
| 5.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . 44 | | 5.1. Request-Line . . . . . . . . . . . . . . . . . . . . . . 43 | |
| 5.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . 44 | | 5.1.1. Method . . . . . . . . . . . . . . . . . . . . . . . 43 | |
| 5.1.2. Request-URI . . . . . . . . . . . . . . . . . . . . 45 | | 5.1.2. Request-URI . . . . . . . . . . . . . . . . . . . . 44 | |
| 5.2. The Resource Identified by a Request . . . . . . . . . . 46 | | 5.2. The Resource Identified by a Request . . . . . . . . . . 45 | |
| 5.3. Request Header Fields . . . . . . . . . . . . . . . . . 47 | | 5.3. Request Header Fields . . . . . . . . . . . . . . . . . 46 | |
| 6. Response . . . . . . . . . . . . . . . . . . . . . . . . . . 48 | | 6. Response . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |
| 6.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . 48 | | 6.1. Status-Line . . . . . . . . . . . . . . . . . . . . . . 47 | |
| 6.1.1. Status Code and Reason Phrase . . . . . . . . . . . 48 | | 6.1.1. Status Code and Reason Phrase . . . . . . . . . . . 47 | |
| 6.2. Response Header Fields . . . . . . . . . . . . . . . . . 51 | | 6.2. Response Header Fields . . . . . . . . . . . . . . . . . 50 | |
| 7. Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 | | 7. Entity . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 | |
| 7.1. Entity Header Fields . . . . . . . . . . . . . . . . . . 52 | | 7.1. Entity Header Fields . . . . . . . . . . . . . . . . . . 51 | |
| 7.2. Entity Body . . . . . . . . . . . . . . . . . . . . . . 52 | | 7.2. Entity Body . . . . . . . . . . . . . . . . . . . . . . 51 | |
| 7.2.1. Type . . . . . . . . . . . . . . . . . . . . . . . . 53 | | 7.2.1. Type . . . . . . . . . . . . . . . . . . . . . . . . 52 | |
| 7.2.2. Entity Length . . . . . . . . . . . . . . . . . . . 53 | | 7.2.2. Entity Length . . . . . . . . . . . . . . . . . . . 52 | |
| 8. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 54 | | 8. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 53 | |
| 8.1. Persistent Connections . . . . . . . . . . . . . . . . . 54 | | 8.1. Persistent Connections . . . . . . . . . . . . . . . . . 53 | |
| 8.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . 54 | | 8.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . 53 | |
| 8.1.2. Overall Operation . . . . . . . . . . . . . . . . . 54 | | 8.1.2. Overall Operation . . . . . . . . . . . . . . . . . 53 | |
| 8.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . 56 | | 8.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . 55 | |
| 8.1.4. Practical Considerations . . . . . . . . . . . . . . 56 | | 8.1.4. Practical Considerations . . . . . . . . . . . . . . 55 | |
| 8.2. Message Transmission Requirements . . . . . . . . . . . 57 | | 8.2. Message Transmission Requirements . . . . . . . . . . . 56 | |
| 8.2.1. Persistent Connections and Flow Control . . . . . . 57 | | 8.2.1. Persistent Connections and Flow Control . . . . . . 56 | |
| 8.2.2. Monitoring Connections for Error Status Messages . . 57 | | 8.2.2. Monitoring Connections for Error Status Messages . . 56 | |
| 8.2.3. Use of the 100 (Continue) Status . . . . . . . . . . 58 | | 8.2.3. Use of the 100 (Continue) Status . . . . . . . . . . 57 | |
| 8.2.4. Client Behavior if Server Prematurely Closes | | 8.2.4. Client Behavior if Server Prematurely Closes | |
|
| Connection . . . . . . . . . . . . . . . . . . . . . 60 | | Connection . . . . . . . . . . . . . . . . . . . . . 59 | |
| 9. Method Definitions . . . . . . . . . . . . . . . . . . . . . 61 | | 9. Method Definitions . . . . . . . . . . . . . . . . . . . . . 60 | |
| 9.1. Safe and Idempotent Methods . . . . . . . . . . . . . . 61 | | 9.1. Safe and Idempotent Methods . . . . . . . . . . . . . . 60 | |
| 9.1.1. Safe Methods . . . . . . . . . . . . . . . . . . . . 61 | | 9.1.1. Safe Methods . . . . . . . . . . . . . . . . . . . . 60 | |
| 9.1.2. Idempotent Methods . . . . . . . . . . . . . . . . . 61 | | 9.1.2. Idempotent Methods . . . . . . . . . . . . . . . . . 60 | |
| 9.2. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . . 62 | | 9.2. OPTIONS . . . . . . . . . . . . . . . . . . . . . . . . 61 | |
| 9.3. GET . . . . . . . . . . . . . . . . . . . . . . . . . . 63 | | 9.3. GET . . . . . . . . . . . . . . . . . . . . . . . . . . 62 | |
| 9.4. HEAD . . . . . . . . . . . . . . . . . . . . . . . . . . 63 | | 9.4. HEAD . . . . . . . . . . . . . . . . . . . . . . . . . . 62 | |
| 9.5. POST . . . . . . . . . . . . . . . . . . . . . . . . . . 64 | | 9.5. POST . . . . . . . . . . . . . . . . . . . . . . . . . . 63 | |
| 9.6. PUT . . . . . . . . . . . . . . . . . . . . . . . . . . 65 | | 9.6. PUT . . . . . . . . . . . . . . . . . . . . . . . . . . 64 | |
| 9.7. DELETE . . . . . . . . . . . . . . . . . . . . . . . . . 66 | | 9.7. DELETE . . . . . . . . . . . . . . . . . . . . . . . . . 65 | |
| 9.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . . 66 | | 9.8. TRACE . . . . . . . . . . . . . . . . . . . . . . . . . 65 | |
| 9.9. CONNECT . . . . . . . . . . . . . . . . . . . . . . . . 67 | | 9.9. CONNECT . . . . . . . . . . . . . . . . . . . . . . . . 66 | |
| 10. Status Code Definitions . . . . . . . . . . . . . . . . . . . 68 | | 10. Status Code Definitions . . . . . . . . . . . . . . . . . . . 67 | |
| 10.1. Informational 1xx . . . . . . . . . . . . . . . . . . . 68 | | 10.1. Informational 1xx . . . . . . . . . . . . . . . . . . . 67 | |
| 10.1.1. 100 Continue . . . . . . . . . . . . . . . . . . . . 68 | | 10.1.1. 100 Continue . . . . . . . . . . . . . . . . . . . . 67 | |
| 10.1.2. 101 Switching Protocols . . . . . . . . . . . . . . 68 | | 10.1.2. 101 Switching Protocols . . . . . . . . . . . . . . 67 | |
| 10.2. Successful 2xx . . . . . . . . . . . . . . . . . . . . . 69 | | 10.2. Successful 2xx . . . . . . . . . . . . . . . . . . . . . 68 | |
| 10.2.1. 200 OK . . . . . . . . . . . . . . . . . . . . . . . 69 | | 10.2.1. 200 OK . . . . . . . . . . . . . . . . . . . . . . . 68 | |
| 10.2.2. 201 Created . . . . . . . . . . . . . . . . . . . . 69 | | 10.2.2. 201 Created . . . . . . . . . . . . . . . . . . . . 68 | |
| 10.2.3. 202 Accepted . . . . . . . . . . . . . . . . . . . . 69 | | 10.2.3. 202 Accepted . . . . . . . . . . . . . . . . . . . . 68 | |
| 10.2.4. 203 Non-Authoritative Information . . . . . . . . . 70 | | 10.2.4. 203 Non-Authoritative Information . . . . . . . . . 69 | |
| 10.2.5. 204 No Content . . . . . . . . . . . . . . . . . . . 70 | | 10.2.5. 204 No Content . . . . . . . . . . . . . . . . . . . 69 | |
| 10.2.6. 205 Reset Content . . . . . . . . . . . . . . . . . 70 | | 10.2.6. 205 Reset Content . . . . . . . . . . . . . . . . . 69 | |
| 10.2.7. 206 Partial Content . . . . . . . . . . . . . . . . 71 | | 10.2.7. 206 Partial Content . . . . . . . . . . . . . . . . 70 | |
| 10.3. Redirection 3xx . . . . . . . . . . . . . . . . . . . . 71 | | 10.3. Redirection 3xx . . . . . . . . . . . . . . . . . . . . 70 | |
| 10.3.1. 300 Multiple Choices . . . . . . . . . . . . . . . . 72 | | 10.3.1. 300 Multiple Choices . . . . . . . . . . . . . . . . 71 | |
| 10.3.2. 301 Moved Permanently . . . . . . . . . . . . . . . 72 | | 10.3.2. 301 Moved Permanently . . . . . . . . . . . . . . . 71 | |
| 10.3.3. 302 Found . . . . . . . . . . . . . . . . . . . . . 73 | | 10.3.3. 302 Found . . . . . . . . . . . . . . . . . . . . . 72 | |
| 10.3.4. 303 See Other . . . . . . . . . . . . . . . . . . . 73 | | 10.3.4. 303 See Other . . . . . . . . . . . . . . . . . . . 72 | |
| 10.3.5. 304 Not Modified . . . . . . . . . . . . . . . . . . 74 | | 10.3.5. 304 Not Modified . . . . . . . . . . . . . . . . . . 73 | |
| 10.3.6. 305 Use Proxy . . . . . . . . . . . . . . . . . . . 74 | | 10.3.6. 305 Use Proxy . . . . . . . . . . . . . . . . . . . 73 | |
| 10.3.7. 306 (Unused) . . . . . . . . . . . . . . . . . . . . 75 | | 10.3.7. 306 (Unused) . . . . . . . . . . . . . . . . . . . . 74 | |
| 10.3.8. 307 Temporary Redirect . . . . . . . . . . . . . . . 75 | | 10.3.8. 307 Temporary Redirect . . . . . . . . . . . . . . . 74 | |
| 10.4. Client Error 4xx . . . . . . . . . . . . . . . . . . . . 75 | | 10.4. Client Error 4xx . . . . . . . . . . . . . . . . . . . . 74 | |
| 10.4.1. 400 Bad Request . . . . . . . . . . . . . . . . . . 76 | | 10.4.1. 400 Bad Request . . . . . . . . . . . . . . . . . . 75 | |
| 10.4.2. 401 Unauthorized . . . . . . . . . . . . . . . . . . 76 | | 10.4.2. 401 Unauthorized . . . . . . . . . . . . . . . . . . 75 | |
| 10.4.3. 402 Payment Required . . . . . . . . . . . . . . . . 76 | | 10.4.3. 402 Payment Required . . . . . . . . . . . . . . . . 75 | |
| 10.4.4. 403 Forbidden . . . . . . . . . . . . . . . . . . . 76 | | 10.4.4. 403 Forbidden . . . . . . . . . . . . . . . . . . . 75 | |
| 10.4.5. 404 Not Found . . . . . . . . . . . . . . . . . . . 76 | | 10.4.5. 404 Not Found . . . . . . . . . . . . . . . . . . . 75 | |
| 10.4.6. 405 Method Not Allowed . . . . . . . . . . . . . . . 77 | | 10.4.6. 405 Method Not Allowed . . . . . . . . . . . . . . . 76 | |
| 10.4.7. 406 Not Acceptable . . . . . . . . . . . . . . . . . 77 | | 10.4.7. 406 Not Acceptable . . . . . . . . . . . . . . . . . 76 | |
| 10.4.8. 407 Proxy Authentication Required . . . . . . . . . 77 | | 10.4.8. 407 Proxy Authentication Required . . . . . . . . . 76 | |
| 10.4.9. 408 Request Timeout . . . . . . . . . . . . . . . . 78 | | 10.4.9. 408 Request Timeout . . . . . . . . . . . . . . . . 77 | |
| 10.4.10. 409 Conflict . . . . . . . . . . . . . . . . . . . . 78 | | 10.4.10. 409 Conflict . . . . . . . . . . . . . . . . . . . . 77 | |
| 10.4.11. 410 Gone . . . . . . . . . . . . . . . . . . . . . . 78 | | 10.4.11. 410 Gone . . . . . . . . . . . . . . . . . . . . . . 77 | |
| 10.4.12. 411 Length Required . . . . . . . . . . . . . . . . 79 | | 10.4.12. 411 Length Required . . . . . . . . . . . . . . . . 78 | |
| 10.4.13. 412 Precondition Failed . . . . . . . . . . . . . . 79 | | 10.4.13. 412 Precondition Failed . . . . . . . . . . . . . . 78 | |
| 10.4.14. 413 Request Entity Too Large . . . . . . . . . . . . 79 | | 10.4.14. 413 Request Entity Too Large . . . . . . . . . . . . 78 | |
| 10.4.15. 414 Request-URI Too Long . . . . . . . . . . . . . . 79 | | 10.4.15. 414 Request-URI Too Long . . . . . . . . . . . . . . 78 | |
| 10.4.16. 415 Unsupported Media Type . . . . . . . . . . . . . 79 | | 10.4.16. 415 Unsupported Media Type . . . . . . . . . . . . . 78 | |
| 10.4.17. 416 Requested Range Not Satisfiable . . . . . . . . 79 | | 10.4.17. 416 Requested Range Not Satisfiable . . . . . . . . 78 | |
| 10.4.18. 417 Expectation Failed . . . . . . . . . . . . . . . 80 | | 10.4.18. 417 Expectation Failed . . . . . . . . . . . . . . . 79 | |
| 10.5. Server Error 5xx . . . . . . . . . . . . . . . . . . . . 80 | | 10.5. Server Error 5xx . . . . . . . . . . . . . . . . . . . . 79 | |
| 10.5.1. 500 Internal Server Error . . . . . . . . . . . . . 80 | | 10.5.1. 500 Internal Server Error . . . . . . . . . . . . . 79 | |
| 10.5.2. 501 Not Implemented . . . . . . . . . . . . . . . . 80 | | 10.5.2. 501 Not Implemented . . . . . . . . . . . . . . . . 79 | |
| 10.5.3. 502 Bad Gateway . . . . . . . . . . . . . . . . . . 80 | | 10.5.3. 502 Bad Gateway . . . . . . . . . . . . . . . . . . 79 | |
| 10.5.4. 503 Service Unavailable . . . . . . . . . . . . . . 81 | | 10.5.4. 503 Service Unavailable . . . . . . . . . . . . . . 80 | |
| 10.5.5. 504 Gateway Timeout . . . . . . . . . . . . . . . . 81 | | 10.5.5. 504 Gateway Timeout . . . . . . . . . . . . . . . . 80 | |
| 10.5.6. 505 HTTP Version Not Supported . . . . . . . . . . . 81 | | 10.5.6. 505 HTTP Version Not Supported . . . . . . . . . . . 80 | |
| 11. Access Authentication . . . . . . . . . . . . . . . . . . . . 82 | | 11. Access Authentication . . . . . . . . . . . . . . . . . . . . 81 | |
| 12. Content Negotiation . . . . . . . . . . . . . . . . . . . . . 83 | | 12. Content Negotiation . . . . . . . . . . . . . . . . . . . . . 82 | |
| 12.1. Server-driven Negotiation . . . . . . . . . . . . . . . 83 | | 12.1. Server-driven Negotiation . . . . . . . . . . . . . . . 82 | |
| 12.2. Agent-driven Negotiation . . . . . . . . . . . . . . . . 84 | | 12.2. Agent-driven Negotiation . . . . . . . . . . . . . . . . 83 | |
| 12.3. Transparent Negotiation . . . . . . . . . . . . . . . . 85 | | 12.3. Transparent Negotiation . . . . . . . . . . . . . . . . 84 | |
| 13. Caching in HTTP . . . . . . . . . . . . . . . . . . . . . . . 86 | | 13. Caching in HTTP . . . . . . . . . . . . . . . . . . . . . . . 85 | |
| 13.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 | | 13.1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 | |
| 13.1.1. Cache Correctness . . . . . . . . . . . . . . . . . 87 | | 13.1.1. Cache Correctness . . . . . . . . . . . . . . . . . 86 | |
| 13.1.2. Warnings . . . . . . . . . . . . . . . . . . . . . . 88 | | 13.1.2. Warnings . . . . . . . . . . . . . . . . . . . . . . 87 | |
| 13.1.3. Cache-control Mechanisms . . . . . . . . . . . . . . 89 | | 13.1.3. Cache-control Mechanisms . . . . . . . . . . . . . . 88 | |
| 13.1.4. Explicit User Agent Warnings . . . . . . . . . . . . 89 | | 13.1.4. Explicit User Agent Warnings . . . . . . . . . . . . 88 | |
| 13.1.5. Exceptions to the Rules and Warnings . . . . . . . . 90 | | 13.1.5. Exceptions to the Rules and Warnings . . . . . . . . 89 | |
| 13.1.6. Client-controlled Behavior . . . . . . . . . . . . . 90 | | 13.1.6. Client-controlled Behavior . . . . . . . . . . . . . 89 | |
| 13.2. Expiration Model . . . . . . . . . . . . . . . . . . . . 91 | | 13.2. Expiration Model . . . . . . . . . . . . . . . . . . . . 90 | |
| 13.2.1. Server-Specified Expiration . . . . . . . . . . . . 91 | | 13.2.1. Server-Specified Expiration . . . . . . . . . . . . 90 | |
| 13.2.2. Heuristic Expiration . . . . . . . . . . . . . . . . 91 | | 13.2.2. Heuristic Expiration . . . . . . . . . . . . . . . . 90 | |
| 13.2.3. Age Calculations . . . . . . . . . . . . . . . . . . 92 | | 13.2.3. Age Calculations . . . . . . . . . . . . . . . . . . 91 | |
| 13.2.4. Expiration Calculations . . . . . . . . . . . . . . 94 | | 13.2.4. Expiration Calculations . . . . . . . . . . . . . . 93 | |
| 13.2.5. Disambiguating Expiration Values . . . . . . . . . . 95 | | 13.2.5. Disambiguating Expiration Values . . . . . . . . . . 94 | |
| 13.2.6. Disambiguating Multiple Responses . . . . . . . . . 96 | | 13.2.6. Disambiguating Multiple Responses . . . . . . . . . 95 | |
| 13.3. Validation Model . . . . . . . . . . . . . . . . . . . . 96 | | 13.3. Validation Model . . . . . . . . . . . . . . . . . . . . 95 | |
| 13.3.1. Last-Modified Dates . . . . . . . . . . . . . . . . 97 | | 13.3.1. Last-Modified Dates . . . . . . . . . . . . . . . . 96 | |
| 13.3.2. Entity Tag Cache Validators . . . . . . . . . . . . 97 | | 13.3.2. Entity Tag Cache Validators . . . . . . . . . . . . 96 | |
| 13.3.3. Weak and Strong Validators . . . . . . . . . . . . . 98 | | 13.3.3. Weak and Strong Validators . . . . . . . . . . . . . 97 | |
| 13.3.4. Rules for When to Use Entity Tags and | | 13.3.4. Rules for When to Use Entity Tags and | |
|
| Last-Modified Dates . . . . . . . . . . . . . . . . 100 | | Last-Modified Dates . . . . . . . . . . . . . . . . 99 | |
| 13.3.5. Non-validating Conditionals . . . . . . . . . . . . 102 | | 13.3.5. Non-validating Conditionals . . . . . . . . . . . . 101 | |
| 13.4. Response Cacheability . . . . . . . . . . . . . . . . . 102 | | 13.4. Response Cacheability . . . . . . . . . . . . . . . . . 101 | |
| 13.5. Constructing Responses From Caches . . . . . . . . . . . 103 | | 13.5. Constructing Responses From Caches . . . . . . . . . . . 102 | |
| 13.5.1. End-to-end and Hop-by-hop Headers . . . . . . . . . 103 | | 13.5.1. End-to-end and Hop-by-hop Headers . . . . . . . . . 102 | |
| 13.5.2. Non-modifiable Headers . . . . . . . . . . . . . . . 104 | | 13.5.2. Non-modifiable Headers . . . . . . . . . . . . . . . 103 | |
| 13.5.3. Combining Headers . . . . . . . . . . . . . . . . . 105 | | 13.5.3. Combining Headers . . . . . . . . . . . . . . . . . 104 | |
| 13.5.4. Combining Byte Ranges . . . . . . . . . . . . . . . 106 | | 13.5.4. Combining Byte Ranges . . . . . . . . . . . . . . . 105 | |
| 13.6. Caching Negotiated Responses . . . . . . . . . . . . . . 107 | | 13.6. Caching Negotiated Responses . . . . . . . . . . . . . . 106 | |
| 13.7. Shared and Non-Shared Caches . . . . . . . . . . . . . . 108 | | 13.7. Shared and Non-Shared Caches . . . . . . . . . . . . . . 107 | |
| 13.8. Errors or Incomplete Response Cache Behavior . . . . . . 108 | | 13.8. Errors or Incomplete Response Cache Behavior . . . . . . 107 | |
| 13.9. Side Effects of GET and HEAD . . . . . . . . . . . . . . 109 | | 13.9. Side Effects of GET and HEAD . . . . . . . . . . . . . . 108 | |
| 13.10. Invalidation After Updates or Deletions . . . . . . . . 109 | | 13.10. Invalidation After Updates or Deletions . . . . . . . . 108 | |
| 13.11. Write-Through Mandatory . . . . . . . . . . . . . . . . 110 | | 13.11. Write-Through Mandatory . . . . . . . . . . . . . . . . 109 | |
| 13.12. Cache Replacement . . . . . . . . . . . . . . . . . . . 110 | | 13.12. Cache Replacement . . . . . . . . . . . . . . . . . . . 109 | |
| 13.13. History Lists . . . . . . . . . . . . . . . . . . . . . 111 | | 13.13. History Lists . . . . . . . . . . . . . . . . . . . . . 110 | |
| 14. Header Field Definitions . . . . . . . . . . . . . . . . . . 112 | | 14. Header Field Definitions . . . . . . . . . . . . . . . . . . 111 | |
| 14.1. Accept . . . . . . . . . . . . . . . . . . . . . . . . . 112 | | 14.1. Accept . . . . . . . . . . . . . . . . . . . . . . . . . 111 | |
| 14.2. Accept-Charset . . . . . . . . . . . . . . . . . . . . . 114 | | 14.2. Accept-Charset . . . . . . . . . . . . . . . . . . . . . 113 | |
| 14.3. Accept-Encoding . . . . . . . . . . . . . . . . . . . . 114 | | 14.3. Accept-Encoding . . . . . . . . . . . . . . . . . . . . 113 | |
| 14.4. Accept-Language . . . . . . . . . . . . . . . . . . . . 116 | | 14.4. Accept-Language . . . . . . . . . . . . . . . . . . . . 115 | |
| 14.5. Accept-Ranges . . . . . . . . . . . . . . . . . . . . . 117 | | 14.5. Accept-Ranges . . . . . . . . . . . . . . . . . . . . . 116 | |
| 14.6. Age . . . . . . . . . . . . . . . . . . . . . . . . . . 117 | | 14.6. Age . . . . . . . . . . . . . . . . . . . . . . . . . . 116 | |
| 14.7. Allow . . . . . . . . . . . . . . . . . . . . . . . . . 118 | | 14.7. Allow . . . . . . . . . . . . . . . . . . . . . . . . . 117 | |
| 14.8. Authorization . . . . . . . . . . . . . . . . . . . . . 119 | | 14.8. Authorization . . . . . . . . . . . . . . . . . . . . . 117 | |
| 14.9. Cache-Control . . . . . . . . . . . . . . . . . . . . . 119 | | 14.9. Cache-Control . . . . . . . . . . . . . . . . . . . . . 118 | |
| 14.9.1. What is Cacheable . . . . . . . . . . . . . . . . . 121 | | 14.9.1. What is Cacheable . . . . . . . . . . . . . . . . . 120 | |
| 14.9.2. What May be Stored by Caches . . . . . . . . . . . . 122 | | 14.9.2. What May be Stored by Caches . . . . . . . . . . . . 121 | |
| 14.9.3. Modifications of the Basic Expiration Mechanism . . 123 | | 14.9.3. Modifications of the Basic Expiration Mechanism . . 122 | |
| 14.9.4. Cache Revalidation and Reload Controls . . . . . . . 125 | | 14.9.4. Cache Revalidation and Reload Controls . . . . . . . 124 | |
| 14.9.5. No-Transform Directive . . . . . . . . . . . . . . . 128 | | 14.9.5. No-Transform Directive . . . . . . . . . . . . . . . 126 | |
| 14.9.6. Cache Control Extensions . . . . . . . . . . . . . . 128 | | 14.9.6. Cache Control Extensions . . . . . . . . . . . . . . 127 | |
| 14.10. Connection . . . . . . . . . . . . . . . . . . . . . . . 129 | | 14.10. Connection . . . . . . . . . . . . . . . . . . . . . . . 128 | |
| 14.11. Content-Encoding . . . . . . . . . . . . . . . . . . . . 130 | | 14.11. Content-Encoding . . . . . . . . . . . . . . . . . . . . 129 | |
| 14.12. Content-Language . . . . . . . . . . . . . . . . . . . . 131 | | 14.12. Content-Language . . . . . . . . . . . . . . . . . . . . 129 | |
| 14.13. Content-Length . . . . . . . . . . . . . . . . . . . . . 131 | | 14.13. Content-Length . . . . . . . . . . . . . . . . . . . . . 130 | |
| 14.14. Content-Location . . . . . . . . . . . . . . . . . . . . 132 | | 14.14. Content-Location . . . . . . . . . . . . . . . . . . . . 131 | |
| 14.15. Content-MD5 . . . . . . . . . . . . . . . . . . . . . . 133 | | 14.15. Content-MD5 . . . . . . . . . . . . . . . . . . . . . . 132 | |
| 14.16. Content-Range . . . . . . . . . . . . . . . . . . . . . 134 | | 14.16. Content-Range . . . . . . . . . . . . . . . . . . . . . 133 | |
| 14.17. Content-Type . . . . . . . . . . . . . . . . . . . . . . 136 | | 14.17. Content-Type . . . . . . . . . . . . . . . . . . . . . . 135 | |
| 14.18. Date . . . . . . . . . . . . . . . . . . . . . . . . . . 137 | | 14.18. Date . . . . . . . . . . . . . . . . . . . . . . . . . . 135 | |
| 14.18.1. Clockless Origin Server Operation . . . . . . . . . 138 | | 14.18.1. Clockless Origin Server Operation . . . . . . . . . 136 | |
| 14.19. ETag . . . . . . . . . . . . . . . . . . . . . . . . . . 138 | | 14.19. ETag . . . . . . . . . . . . . . . . . . . . . . . . . . 137 | |
| 14.20. Expect . . . . . . . . . . . . . . . . . . . . . . . . . 138 | | 14.20. Expect . . . . . . . . . . . . . . . . . . . . . . . . . 137 | |
| 14.21. Expires . . . . . . . . . . . . . . . . . . . . . . . . 139 | | 14.21. Expires . . . . . . . . . . . . . . . . . . . . . . . . 138 | |
| 14.22. From . . . . . . . . . . . . . . . . . . . . . . . . . . 140 | | 14.22. From . . . . . . . . . . . . . . . . . . . . . . . . . . 139 | |
| 14.23. Host . . . . . . . . . . . . . . . . . . . . . . . . . . 141 | | 14.23. Host . . . . . . . . . . . . . . . . . . . . . . . . . . 139 | |
| 14.24. If-Match . . . . . . . . . . . . . . . . . . . . . . . . 141 | | 14.24. If-Match . . . . . . . . . . . . . . . . . . . . . . . . 140 | |
| 14.25. If-Modified-Since . . . . . . . . . . . . . . . . . . . 142 | | 14.25. If-Modified-Since . . . . . . . . . . . . . . . . . . . 141 | |
| 14.26. If-None-Match . . . . . . . . . . . . . . . . . . . . . 144 | | 14.26. If-None-Match . . . . . . . . . . . . . . . . . . . . . 143 | |
| 14.27. If-Range . . . . . . . . . . . . . . . . . . . . . . . . 145 | | 14.27. If-Range . . . . . . . . . . . . . . . . . . . . . . . . 144 | |
| 14.28. If-Unmodified-Since . . . . . . . . . . . . . . . . . . 146 | | 14.28. If-Unmodified-Since . . . . . . . . . . . . . . . . . . 145 | |
| 14.29. Last-Modified . . . . . . . . . . . . . . . . . . . . . 146 | | 14.29. Last-Modified . . . . . . . . . . . . . . . . . . . . . 145 | |
| 14.30. Location . . . . . . . . . . . . . . . . . . . . . . . . 147 | | 14.30. Location . . . . . . . . . . . . . . . . . . . . . . . . 146 | |
| 14.31. Max-Forwards . . . . . . . . . . . . . . . . . . . . . . 148 | | 14.31. Max-Forwards . . . . . . . . . . . . . . . . . . . . . . 147 | |
| 14.32. Pragma . . . . . . . . . . . . . . . . . . . . . . . . . 148 | | 14.32. Pragma . . . . . . . . . . . . . . . . . . . . . . . . . 147 | |
| 14.33. Proxy-Authenticate . . . . . . . . . . . . . . . . . . . 149 | | 14.33. Proxy-Authenticate . . . . . . . . . . . . . . . . . . . 148 | |
| 14.34. Proxy-Authorization . . . . . . . . . . . . . . . . . . 150 | | 14.34. Proxy-Authorization . . . . . . . . . . . . . . . . . . 148 | |
| 14.35. Range . . . . . . . . . . . . . . . . . . . . . . . . . 150 | | 14.35. Range . . . . . . . . . . . . . . . . . . . . . . . . . 149 | |
| 14.35.1. Byte Ranges . . . . . . . . . . . . . . . . . . . . 150 | | 14.35.1. Byte Ranges . . . . . . . . . . . . . . . . . . . . 149 | |
| 14.35.2. Range Retrieval Requests . . . . . . . . . . . . . . 152 | | 14.35.2. Range Retrieval Requests . . . . . . . . . . . . . . 150 | |
| 14.36. Referer . . . . . . . . . . . . . . . . . . . . . . . . 153 | | 14.36. Referer . . . . . . . . . . . . . . . . . . . . . . . . 151 | |
| 14.37. Retry-After . . . . . . . . . . . . . . . . . . . . . . 153 | | 14.37. Retry-After . . . . . . . . . . . . . . . . . . . . . . 152 | |
| 14.38. Server . . . . . . . . . . . . . . . . . . . . . . . . . 153 | | 14.38. Server . . . . . . . . . . . . . . . . . . . . . . . . . 152 | |
| 14.39. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 | | 14.39. TE . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 | |
| 14.40. Trailer . . . . . . . . . . . . . . . . . . . . . . . . 155 | | 14.40. Trailer . . . . . . . . . . . . . . . . . . . . . . . . 154 | |
| 14.41. Transfer-Encoding . . . . . . . . . . . . . . . . . . . 156 | | 14.41. Transfer-Encoding . . . . . . . . . . . . . . . . . . . 154 | |
| 14.42. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . 156 | | 14.42. Upgrade . . . . . . . . . . . . . . . . . . . . . . . . 155 | |
| 14.43. User-Agent . . . . . . . . . . . . . . . . . . . . . . . 157 | | 14.43. User-Agent . . . . . . . . . . . . . . . . . . . . . . . 156 | |
| 14.44. Vary . . . . . . . . . . . . . . . . . . . . . . . . . . 158 | | 14.44. Vary . . . . . . . . . . . . . . . . . . . . . . . . . . 156 | |
| 14.45. Via . . . . . . . . . . . . . . . . . . . . . . . . . . 158 | | 14.45. Via . . . . . . . . . . . . . . . . . . . . . . . . . . 157 | |
| 14.46. Warning . . . . . . . . . . . . . . . . . . . . . . . . 160 | | 14.46. Warning . . . . . . . . . . . . . . . . . . . . . . . . 159 | |
| 14.47. WWW-Authenticate . . . . . . . . . . . . . . . . . . . . 163 | | 14.47. WWW-Authenticate . . . . . . . . . . . . . . . . . . . . 161 | |
| 15. Security Considerations . . . . . . . . . . . . . . . . . . . 164 | | 15. Security Considerations . . . . . . . . . . . . . . . . . . . 162 | |
| 15.1. Personal Information . . . . . . . . . . . . . . . . . . 164 | | 15.1. Personal Information . . . . . . . . . . . . . . . . . . 162 | |
| 15.1.1. Abuse of Server Log Information . . . . . . . . . . 164 | | 15.1.1. Abuse of Server Log Information . . . . . . . . . . 162 | |
| 15.1.2. Transfer of Sensitive Information . . . . . . . . . 164 | | 15.1.2. Transfer of Sensitive Information . . . . . . . . . 162 | |
| 15.1.3. Encoding Sensitive Information in URI's . . . . . . 165 | | 15.1.3. Encoding Sensitive Information in URI's . . . . . . 163 | |
| 15.1.4. Privacy Issues Connected to Accept Headers . . . . . 166 | | 15.1.4. Privacy Issues Connected to Accept Headers . . . . . 164 | |
| 15.2. Attacks Based On File and Path Names . . . . . . . . . . 166 | | 15.2. Attacks Based On File and Path Names . . . . . . . . . . 164 | |
| 15.3. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . . 167 | | 15.3. DNS Spoofing . . . . . . . . . . . . . . . . . . . . . . 165 | |
| 15.4. Location Headers and Spoofing . . . . . . . . . . . . . 167 | | 15.4. Location Headers and Spoofing . . . . . . . . . . . . . 165 | |
| 15.5. Content-Disposition Issues . . . . . . . . . . . . . . . 168 | | 15.5. Content-Disposition Issues . . . . . . . . . . . . . . . 166 | |
| 15.6. Authentication Credentials and Idle Clients . . . . . . 168 | | 15.6. Authentication Credentials and Idle Clients . . . . . . 166 | |
| 15.7. Proxies and Caching . . . . . . . . . . . . . . . . . . 168 | | 15.7. Proxies and Caching . . . . . . . . . . . . . . . . . . 166 | |
| 15.7.1. Denial of Service Attacks on Proxies . . . . . . . . 169 | | 15.7.1. Denial of Service Attacks on Proxies . . . . . . . . 167 | |
| 16. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 170 | | 16. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 168 | |
| 16.1. (RFC2616) . . . . . . . . . . . . . . . . . . . . . . . 170 | | 16.1. (RFC2616) . . . . . . . . . . . . . . . . . . . . . . . 168 | |
| 16.2. (This Document) . . . . . . . . . . . . . . . . . . . . 171 | | 16.2. (This Document) . . . . . . . . . . . . . . . . . . . . 169 | |
| 17. References . . . . . . . . . . . . . . . . . . . . . . . . . 172 | | 17. References . . . . . . . . . . . . . . . . . . . . . . . . . 170 | |
| 17.1. References . . . . . . . . . . . . . . . . . . . . . . . 172 | | 17.1. References . . . . . . . . . . . . . . . . . . . . . . . 170 | |
| 17.2. Informative References . . . . . . . . . . . . . . . . . 175 | | 17.2. Informative References . . . . . . . . . . . . . . . . . 174 | |
| Appendix A. Internet Media Type message/http and | | Appendix A. Internet Media Type message/http and | |
|
| application/http . . . . . . . . . . . . . . . . . . 177 | | application/http . . . . . . . . . . . . . . . . . . 176 | |
| Appendix B. Internet Media Type multipart/byteranges . . . . . . 179 | | Appendix B. Internet Media Type multipart/byteranges . . . . . . 178 | |
| Appendix C. Tolerant Applications . . . . . . . . . . . . . . . 181 | | Appendix C. Tolerant Applications . . . . . . . . . . . . . . . 180 | |
| Appendix D. Differences Between HTTP Entities and RFC 2045 | | Appendix D. Differences Between HTTP Entities and RFC 2045 | |
|
| Entities . . . . . . . . . . . . . . . . . . . . . . 182 | | Entities . . . . . . . . . . . . . . . . . . . . . . 181 | |
| D.1. MIME-Version . . . . . . . . . . . . . . . . . . . . . . 182 | | D.1. MIME-Version . . . . . . . . . . . . . . . . . . . . . . 181 | |
| D.2. Conversion to Canonical Form . . . . . . . . . . . . . . 182 | | D.2. Conversion to Canonical Form . . . . . . . . . . . . . . 181 | |
| D.3. Conversion of Date Formats . . . . . . . . . . . . . . . 183 | | D.3. Conversion of Date Formats . . . . . . . . . . . . . . . 182 | |
| D.4. Introduction of Content-Encoding . . . . . . . . . . . . 183 | | D.4. Introduction of Content-Encoding . . . . . . . . . . . . 182 | |
| D.5. No Content-Transfer-Encoding . . . . . . . . . . . . . . 183 | | D.5. No Content-Transfer-Encoding . . . . . . . . . . . . . . 182 | |
| D.6. Introduction of Transfer-Encoding . . . . . . . . . . . 184 | | D.6. Introduction of Transfer-Encoding . . . . . . . . . . . 183 | |
| D.7. MHTML and Line Length Limitations . . . . . . . . . . . 184 | | D.7. MHTML and Line Length Limitations . . . . . . . . . . . 183 | |
| Appendix E. Additional Features . . . . . . . . . . . . . . . . 185 | | Appendix E. Additional Features . . . . . . . . . . . . . . . . 184 | |
| E.1. Content-Disposition . . . . . . . . . . . . . . . . . . 185 | | E.1. Content-Disposition . . . . . . . . . . . . . . . . . . 184 | |
| Appendix F. Compatibility with Previous Versions . . . . . . . . 186 | | Appendix F. Compatibility with Previous Versions . . . . . . . . 185 | |
| F.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . 186 | | F.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . 185 | |
| F.1.1. Changes to Simplify Multi-homed Web Servers and | | F.1.1. Changes to Simplify Multi-homed Web Servers and | |
|
| Conserve IP Addresses . . . . . . . . . . . . . . . 186 | | Conserve IP Addresses . . . . . . . . . . . . . . . 185 | |
| F.2. Compatibility with HTTP/1.0 Persistent Connections . . . 187 | | F.2. Compatibility with HTTP/1.0 Persistent Connections . . . 186 | |
| F.3. Changes from RFC 2068 . . . . . . . . . . . . . . . . . 188 | | F.3. Changes from RFC 2068 . . . . . . . . . . . . . . . . . 187 | |
| F.4. Changes from RFC 2616 . . . . . . . . . . . . . . . . . 190 | | F.4. Changes from RFC 2616 . . . . . . . . . . . . . . . . . 189 | |
| Appendix G. Change Log (to be removed by RFC Editor before | | Appendix G. Change Log (to be removed by RFC Editor before | |
|
| publication) . . . . . . . . . . . . . . . . . . . . 192 | | publication) . . . . . . . . . . . . . . . . . . . . 191 | |
| G.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . 192 | | G.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . 191 | |
| G.2. Since draft-lafon-rfc2616bis-00 . . . . . . . . . . . . 192 | | G.2. Since draft-lafon-rfc2616bis-00 . . . . . . . . . . . . 191 | |
| | | G.3. Since draft-lafon-rfc2616bis-01 . . . . . . . . . . . . 191 | |
| Appendix H. Resolved issues (to be removed by RFC Editor | | Appendix H. Resolved issues (to be removed by RFC Editor | |
|
| before publication) . . . . . . . . . . . . . . . . 193 | | before publication) . . . . . . . . . . . . . . . . 192 | |
| H.1. rfc2606-compliance . . . . . . . . . . . . . . . . . . . 193 | | H.1. rfc2606-compliance . . . . . . . . . . . . . . . . . . . 192 | |
| H.2. editor-notes . . . . . . . . . . . . . . . . . . . . . . 193 | | H.2. references_style . . . . . . . . . . . . . . . . . . . . 192 | |
| H.3. verscase . . . . . . . . . . . . . . . . . . . . . . . . 193 | | H.3. media-reg . . . . . . . . . . . . . . . . . . . . . . . 192 | |
| H.4. unsafe-uri . . . . . . . . . . . . . . . . . . . . . . . 193 | | H.4. location-fragments . . . . . . . . . . . . . . . . . . . 193 | |
| H.5. charactersets . . . . . . . . . . . . . . . . . . . . . 194 | | | |
| H.6. identity . . . . . . . . . . . . . . . . . . . . . . . . 194 | | | |
| H.7. chunk-size . . . . . . . . . . . . . . . . . . . . . . . 194 | | | |
| H.8. msg-len-chars . . . . . . . . . . . . . . . . . . . . . 195 | | | |
| H.9. uriquery . . . . . . . . . . . . . . . . . . . . . . . . 195 | | | |
| H.10. post . . . . . . . . . . . . . . . . . . . . . . . . . . 195 | | | |
| H.11. ifrange206 . . . . . . . . . . . . . . . . . . . . . . . 195 | | | |
| H.12. saferedirect . . . . . . . . . . . . . . . . . . . . . . 196 | | | |
| H.13. trailer-hop . . . . . . . . . . . . . . . . . . . . . . 196 | | | |
| H.14. invalidupd . . . . . . . . . . . . . . . . . . . . . . . 196 | | | |
| H.15. noclose1xx . . . . . . . . . . . . . . . . . . . . . . . 197 | | | |
| H.16. via-must . . . . . . . . . . . . . . . . . . . . . . . . 197 | | | |
| Appendix I. Open issues (to be removed by RFC Editor prior to | | Appendix I. Open issues (to be removed by RFC Editor prior to | |
|
| publication) . . . . . . . . . . . . . . . . . . . . 198 | | publication) . . . . . . . . . . . . . . . . . . . . 194 | |
| I.1. rfc2616bis . . . . . . . . . . . . . . . . . . . . . . . 198 | | I.1. rfc2616bis . . . . . . . . . . . . . . . . . . . . . . . 194 | |
| I.2. unneeded_references . . . . . . . . . . . . . . . . . . 198 | | I.2. unneeded_references . . . . . . . . . . . . . . . . . . 194 | |
| I.3. edit . . . . . . . . . . . . . . . . . . . . . . . . . . 198 | | I.3. edit . . . . . . . . . . . . . . . . . . . . . . . . . . 194 | |
| I.4. media-reg . . . . . . . . . . . . . . . . . . . . . . . 198 | | I.4. rfc2048_informative_and_obsolete . . . . . . . . . . . . 194 | |
| I.5. languagetag . . . . . . . . . . . . . . . . . . . . . . 198 | | I.5. languagetag . . . . . . . . . . . . . . . . . . . . . . 194 | |
| I.6. location-fragments . . . . . . . . . . . . . . . . . . . 199 | | I.6. fragment-combination . . . . . . . . . . . . . . . . . . 195 | |
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 | | Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 | |
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 211 | | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 207 | |
| Intellectual Property and Copyright Statements . . . . . . . . . 214 | | Intellectual Property and Copyright Statements . . . . . . . . . 210 | |
| | | | |
| 1. Introduction | | 1. Introduction | |
| | | | |
| 1.1. Purpose | | 1.1. Purpose | |
| | | | |
| The Hypertext Transfer Protocol (HTTP) is an application-level | | The Hypertext Transfer Protocol (HTTP) is an application-level | |
| protocol for distributed, collaborative, hypermedia information | | protocol for distributed, collaborative, hypermedia 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. The first version of HTTP, | | information initiative since 1990. The first version of HTTP, | |
| referred to as HTTP/0.9, was a simple protocol for raw data transfer | | referred to as HTTP/0.9, was a simple protocol for raw data transfer | |
|
| across the Internet. HTTP/1.0, as defined by RFC 1945 [6], improved | | across the Internet. HTTP/1.0, as defined by [RFC1945], improved the | |
| the protocol by allowing messages to be in the format of MIME-like | | protocol by allowing messages to be in the format of MIME-like | |
| messages, containing metainformation about the data transferred and | | messages, containing metainformation about the data transferred and | |
| modifiers on the request/response semantics. However, HTTP/1.0 does | | modifiers on the request/response semantics. However, HTTP/1.0 does | |
| not sufficiently take into consideration the effects of hierarchical | | not sufficiently take into consideration the effects of hierarchical | |
| proxies, caching, the need for persistent connections, or virtual | | proxies, caching, the need for persistent connections, or virtual | |
| hosts. In addition, the proliferation of incompletely-implemented | | hosts. In addition, the proliferation of incompletely-implemented | |
| applications calling themselves "HTTP/1.0" has necessitated a | | applications calling themselves "HTTP/1.0" has necessitated a | |
| protocol version change in order for two communicating applications | | protocol version change in order for two communicating applications | |
| to determine each other's true capabilities. | | to determine each other's true capabilities. | |
| | | | |
| This specification defines the protocol referred to as "HTTP/1.1". | | This specification defines the protocol referred to as "HTTP/1.1". | |
| This protocol includes more stringent requirements than HTTP/1.0 in | | This protocol includes more stringent requirements than HTTP/1.0 in | |
| order to ensure reliable implementation of its features. | | order to ensure reliable implementation of its features. | |
| | | | |
| Practical information systems require more functionality than simple | | Practical information systems require more functionality than simple | |
| retrieval, including search, front-end update, and annotation. HTTP | | retrieval, including search, front-end update, and annotation. HTTP | |
| allows an open-ended set of methods and headers that indicate the | | allows an open-ended set of methods and headers that indicate the | |
|
| purpose of a request [47]. It builds on the discipline of reference | | purpose of a request [RFC2324]. It builds on the discipline of | |
| provided by the Uniform Resource Identifier (URI) [3], as a location | | reference provided by the Uniform Resource Identifier (URI) | |
| (URL) [4] or name (URN) [20], for indicating the resource to which a | | [RFC1630], as a location (URL) [RFC1738] or name (URN) [RFC1737], for | |
| method is to be applied. Messages are passed in a format similar to | | indicating the resource to which a method is to be applied. Messages | |
| that used by Internet mail [9] as defined by the Multipurpose | | are passed in a format similar to that used by Internet mail [RFC822] | |
| Internet Mail Extensions (MIME) [7]. | | as defined by the Multipurpose Internet Mail Extensions (MIME) | |
| | | [RFC2045]. | |
| | | | |
| HTTP is also used as a generic protocol for communication between | | HTTP is also used as a generic protocol for communication between | |
| user agents and proxies/gateways to other Internet systems, including | | user agents and proxies/gateways to other Internet systems, including | |
|
| those supported by the SMTP [16], NNTP [13], FTP [18], Gopher [2], | | those supported by the SMTP [RFC821], NNTP [RFC977], FTP [RFC959], | |
| and WAIS [10] protocols. In this way, HTTP allows basic hypermedia | | Gopher [RFC1436], and WAIS [WAIS] protocols. In this way, HTTP | |
| access to resources available from diverse applications. | | allows basic hypermedia access to resources available from diverse | |
| | | applications. | |
| | | | |
| 1.2. Requirements | | 1.2. Requirements | |
| | | | |
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |
|
| document are to be interpreted as described in RFC 2119 [34]. | | document are to be interpreted as described in [RFC2119]. | |
| | | | |
| An implementation is not compliant if it fails to satisfy one or more | | An implementation is not compliant if it fails to satisfy one or more | |
| of the MUST or REQUIRED level requirements for the protocols it | | of the MUST or REQUIRED level requirements for the protocols it | |
| implements. An implementation that satisfies all the MUST or | | implements. An implementation that satisfies all the MUST or | |
| REQUIRED level and all the SHOULD level requirements for its | | REQUIRED level and all the SHOULD level requirements for its | |
| protocols is said to be "unconditionally compliant"; one that | | protocols is said to be "unconditionally compliant"; one that | |
| satisfies all the MUST level requirements but not all the SHOULD | | satisfies all the MUST level requirements but not all the SHOULD | |
| level requirements for its protocols is said to be "conditionally | | level requirements for its protocols is said to be "conditionally | |
| compliant." | | compliant." | |
| | | | |
| | | | |
| skipping to change at page 19, line 4 | | skipping to change at page 18, line 4 | |
| subsets of cached data via CD-ROM, and so on. HTTP systems are used | | subsets of cached data via CD-ROM, and so on. HTTP systems are used | |
| in corporate intranets over high-bandwidth links, and for access via | | in corporate intranets over high-bandwidth links, and for access via | |
| PDAs with low-power radio links and intermittent connectivity. The | | PDAs with low-power radio links and intermittent connectivity. The | |
| goal of HTTP/1.1 is to support the wide diversity of configurations | | goal of HTTP/1.1 is to support the wide diversity of configurations | |
| already deployed while introducing protocol constructs that meet the | | already deployed while introducing protocol constructs that meet the | |
| needs of those who build web applications that require high | | needs of those who build web applications that require high | |
| reliability and, failing that, at least reliable indications of | | reliability and, failing that, at least reliable indications of | |
| failure. | | failure. | |
| | | | |
| HTTP communication usually takes place over TCP/IP connections. The | | HTTP communication usually takes place over TCP/IP connections. The | |
|
| default port is TCP 80 [19], but other ports can be used. This does | | default port is TCP 80 [RFC1700], but other ports can be used. This | |
| not preclude HTTP from being implemented on top of any other protocol | | does not preclude HTTP from being implemented on top of any other | |
| on the Internet, or on other networks. HTTP only presumes a reliable | | protocol on the Internet, or on other networks. HTTP only presumes a | |
| transport; any protocol that provides such guarantees can be used; | | reliable transport; any protocol that provides such guarantees can be | |
| the mapping of the HTTP/1.1 request and response structures onto the | | used; the mapping of the HTTP/1.1 request and response structures | |
| transport data units of the protocol in question is outside the scope | | onto the transport data units of the protocol in question is outside | |
| of this specification. | | the scope of this specification. | |
| | | | |
| In HTTP/1.0, most implementations used a new connection for each | | In HTTP/1.0, most implementations used a new connection for each | |
| request/response exchange. In HTTP/1.1, a connection may be used for | | request/response exchange. In HTTP/1.1, a connection may be used for | |
| one or more request/response exchanges, although connections may be | | one or more request/response exchanges, although connections may be | |
| closed for a variety of reasons (see Section 8.1). | | closed for a variety of reasons (see Section 8.1). | |
| | | | |
| 2. Notational Conventions and Generic Grammar | | 2. Notational Conventions and Generic Grammar | |
| | | | |
| 2.1. Augmented BNF | | 2.1. Augmented BNF | |
| | | | |
| All of the mechanisms specified in this document are described in | | All of the mechanisms specified in this document are described in | |
| both prose and an augmented Backus-Naur Form (BNF) similar to that | | both prose and an augmented Backus-Naur Form (BNF) similar to that | |
|
| used by RFC 822 [9]. Implementors will need to be familiar with the | | used by [RFC822]. Implementors will need to be familiar with the | |
| notation in order to understand this specification. The augmented | | notation in order to understand this specification. The augmented | |
| BNF includes the following constructs: | | BNF includes the following constructs: | |
| | | | |
| name = definition | | name = definition | |
| | | | |
| The name of a rule is simply the name itself (without any | | The name of a rule is simply the name itself (without any | |
| enclosing "<" and ">") and is separated from its definition by the | | enclosing "<" and ">") and is separated from its definition by the | |
| equal "=" character. White space is only significant in that | | equal "=" character. White space is only significant in that | |
| indentation of continuation lines is used to indicate a rule | | indentation of continuation lines is used to indicate a rule | |
| definition that spans more than one line. Certain basic rules are | | definition that spans more than one line. Certain basic rules are | |
| | | | |
| skipping to change at page 22, line 11 | | skipping to change at page 21, line 11 | |
| between adjacent words and separators, without changing the | | between adjacent words and separators, without changing the | |
| interpretation of a field. At least one delimiter (LWS and/or | | interpretation of a field. At least one delimiter (LWS and/or | |
| separators) MUST exist between any two tokens (for the definition | | separators) MUST exist between any two tokens (for the definition | |
| of "token" below), since they would otherwise be interpreted as a | | of "token" below), since they would otherwise be interpreted as a | |
| single token. | | single token. | |
| | | | |
| 2.2. Basic Rules | | 2.2. Basic Rules | |
| | | | |
| The following rules are used throughout this specification to | | The following rules are used throughout this specification to | |
| describe basic parsing constructs. The US-ASCII coded character set | | describe basic parsing constructs. The US-ASCII coded character set | |
|
| is defined by ANSI X3.4-1986 [21]. | | is defined by ANSI X3.4-1986 [USASCII]. | |
| | | | |
| OCTET = <any 8-bit sequence of data> | | OCTET = <any 8-bit sequence of data> | |
| CHAR = <any US-ASCII character (octets 0 - 127)> | | CHAR = <any US-ASCII character (octets 0 - 127)> | |
| UPALPHA = <any US-ASCII uppercase letter "A".."Z"> | | UPALPHA = <any US-ASCII uppercase letter "A".."Z"> | |
| LOALPHA = <any US-ASCII lowercase letter "a".."z"> | | LOALPHA = <any US-ASCII lowercase letter "a".."z"> | |
| ALPHA = UPALPHA | LOALPHA | | ALPHA = UPALPHA | LOALPHA | |
| DIGIT = <any US-ASCII digit "0".."9"> | | DIGIT = <any US-ASCII digit "0".."9"> | |
| CTL = <any US-ASCII control character | | CTL = <any US-ASCII control character | |
| (octets 0 - 31) and DEL (127)> | | (octets 0 - 31) and DEL (127)> | |
| CR = <US-ASCII CR, carriage return (13)> | | CR = <US-ASCII CR, carriage return (13)> | |
| | | | |
| skipping to change at page 22, line 45 | | skipping to change at page 21, line 45 | |
| continuation line begins with a space or horizontal tab. All linear | | continuation line begins with a space or horizontal tab. All linear | |
| white space, including folding, has the same semantics as SP. A | | white space, including folding, has the same semantics as SP. A | |
| recipient MAY replace any linear white space with a single SP before | | recipient MAY replace any linear white space with a single SP before | |
| interpreting the field value or forwarding the message downstream. | | interpreting the field value or forwarding the message downstream. | |
| | | | |
| LWS = [CRLF] 1*( SP | HT ) | | LWS = [CRLF] 1*( SP | HT ) | |
| | | | |
| The TEXT rule is only used for descriptive field contents and values | | The TEXT rule is only used for descriptive field contents and values | |
| that are not intended to be interpreted by the message parser. Words | | that are not intended to be interpreted by the message parser. Words | |
| of *TEXT MAY contain characters from character sets other than ISO- | | of *TEXT MAY contain characters from character sets other than ISO- | |
|
| 8859-1 [22] only when encoded according to the rules of RFC 2047 | | 8859-1 [ISO-8859] only when encoded according to the rules of | |
| [14]. | | [RFC2047]. | |
| | | | |
| TEXT = <any OCTET except CTLs, | | TEXT = <any OCTET except CTLs, | |
| but including LWS> | | but including LWS> | |
| | | | |
| A CRLF is allowed in the definition of TEXT only as part of a header | | A CRLF is allowed in the definition of TEXT only as part of a header | |
| field continuation. It is expected that the folding LWS will be | | field continuation. It is expected that the folding LWS will be | |
| replaced with a single SP before interpretation of the TEXT value. | | replaced with a single SP before interpretation of the TEXT value. | |
| | | | |
| Hexadecimal numeric characters are used in several protocol elements. | | Hexadecimal numeric characters are used in several protocol elements. | |
| | | | |
| | | | |
| skipping to change at page 24, line 21 | | skipping to change at page 23, line 21 | |
| the sender to indicate the format of a message and its capacity for | | the sender to indicate the format of a message and its capacity for | |
| understanding further HTTP communication, rather than the features | | understanding further HTTP communication, rather than the features | |
| obtained via that communication. No change is made to the version | | obtained via that communication. No change is made to the version | |
| number for the addition of message components which do not affect | | number for the addition of message components which do not affect | |
| communication behavior or which only add to extensible field values. | | communication behavior or which only add to extensible field values. | |
| The <minor> number is incremented when the changes made to the | | The <minor> number is incremented when the changes made to the | |
| protocol add features which do not change the general message parsing | | protocol add features which do not change the general message parsing | |
| algorithm, but which may add to the message semantics and imply | | algorithm, but which may add to the message semantics and imply | |
| additional capabilities of the sender. The <major> number is | | additional capabilities of the sender. The <major> number is | |
| incremented when the format of a message within the protocol is | | incremented when the format of a message within the protocol is | |
|
| changed. See RFC 2145 [36] for a fuller explanation. | | changed. See [RFC2145] for a fuller explanation. | |
| | | | |
| 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. | | in the first line of the message. | |
| | | | |
| HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT | | HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT | |
| | | | |
| Note that the major and minor numbers MUST be treated as separate | | Note that the major and minor numbers MUST be treated as separate | |
| integers and that each MAY be incremented higher than a single digit. | | integers and that each MAY be incremented higher than a single digit. | |
| Thus, HTTP/2.4 is a lower version than HTTP/2.13, which in turn is | | Thus, 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 | | lower than HTTP/12.3. Leading zeros MUST be ignored by recipients | |
| and MUST NOT be sent. | | and MUST NOT be sent. | |
| | | | |
| An application that sends a request or response message that includes | | An application that sends a request or response message that includes | |
| HTTP-Version of "HTTP/1.1" MUST be at least conditionally compliant | | HTTP-Version of "HTTP/1.1" MUST be at least conditionally compliant | |
| with this specification. Applications that are at least | | with this specification. Applications that are at least | |
| conditionally compliant with this specification SHOULD use an HTTP- | | conditionally compliant with this specification SHOULD use an HTTP- | |
| Version of "HTTP/1.1" in their messages, and MUST do so for any | | Version of "HTTP/1.1" in their messages, and MUST do so for any | |
| message that is not compatible with HTTP/1.0. For more details on | | message that is not compatible with HTTP/1.0. For more details on | |
|
| when to send specific HTTP-Version values, see RFC 2145 [36]. | | when to send specific HTTP-Version values, see [RFC2145]. | |
| | | | |
| The HTTP version of an application is the highest HTTP version for | | The HTTP version of an application is the highest HTTP version for | |
| which the application is at least conditionally compliant. HTTP- | | which the application is at least conditionally compliant. HTTP- | |
| Version is case-sensitive. | | Version is case-sensitive. | |
| | | | |
| Proxy and gateway applications need to be careful when forwarding | | Proxy and gateway applications need to be careful when forwarding | |
| messages in protocol versions different from that of the application. | | messages in protocol versions different from that of the application. | |
| Since the protocol version indicates the protocol capability of the | | Since the protocol version indicates the protocol capability of the | |
| sender, a proxy/gateway MUST NOT send a message with a version | | sender, a proxy/gateway MUST NOT send a message with a version | |
| indicator which is greater than its actual version. If a higher | | indicator which is greater than its actual version. If a higher | |
| version request is received, the proxy/gateway MUST either downgrade | | version request is received, the proxy/gateway MUST either downgrade | |
| the request version, or respond with an error, or switch to tunnel | | the request version, or respond with an error, or switch to tunnel | |
| behavior. | | behavior. | |
| | | | |
| Due to interoperability problems with HTTP/1.0 proxies discovered | | Due to interoperability problems with HTTP/1.0 proxies discovered | |
|
| since the publication of RFC 2068 [33], caching proxies MUST, | | since the publication of [RFC2068], caching proxies MUST, gateways | |
| gateways MAY, and tunnels MUST NOT upgrade the request to the highest | | MAY, and tunnels MUST NOT upgrade the request to the highest version | |
| version they support. The proxy/gateway's response to that request | | they support. The proxy/gateway's response to that request MUST be | |
| 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. Uniform Resource Identifiers | | 3.2. Uniform Resource Identifiers | |
| | | | |
| URIs have been known by many names: WWW addresses, Universal Document | | URIs have been known by many names: WWW addresses, Universal Document | |
|
| Identifiers, Universal Resource Identifiers [3], and finally the | | Identifiers, Universal Resource Identifiers [RFC1630], and finally | |
| combination of Uniform Resource Locators (URL) [4] and Names (URN) | | the combination of Uniform Resource Locators (URL) [RFC1738] and | |
| [20]. As far as HTTP is concerned, Uniform Resource Identifiers are | | Names (URN) [RFC1737]. As far as HTTP is concerned, Uniform Resource | |
| simply formatted strings which identify--via name, location, or any | | Identifiers are simply formatted strings which identify--via name, | |
| other characteristic--a resource. | | location, or any other characteristic--a resource. | |
| | | | |
| 3.2.1. General Syntax | | 3.2.1. General Syntax | |
| | | | |
| URIs in HTTP can be represented in absolute form or relative to some | | URIs in HTTP can be represented in absolute form or relative to some | |
|
| known base URI [11], depending upon the context of their use. The | | known base URI [RFC1808], depending upon the context of their use. | |
| two forms are differentiated by the fact that absolute URIs always | | The two forms are differentiated by the fact that absolute URIs | |
| begin with a scheme name followed by a colon. For definitive | | always begin with a scheme name followed by a colon. For definitive | |
| information on URL syntax and semantics, see "Uniform Resource | | information on URL syntax and semantics, see "Uniform Resource | |
|
| Identifiers (URI): Generic Syntax and Semantics," RFC 2396 [42] | | Identifiers (URI): Generic Syntax and Semantics," [RFC2396] (which | |
| (which replaces RFCs 1738 [4] and RFC 1808 [11]). This specification | | replaces [RFC1738] and [RFC1808]). This specification adopts the | |
| adopts the definitions of "URI-reference", "absoluteURI", | | definitions of "URI-reference", "absoluteURI", "relativeURI", "port", | |
| "relativeURI", "port", "host","abs_path", "rel_path", and "authority" | | "host","abs_path", "rel_path", and "authority" from that | |
| from that specification. | | specification. | |
| | | | |
| The HTTP protocol does not place any a priori limit on the length of | | The HTTP protocol does not place any a priori limit on the length of | |
| a URI. Servers MUST be able to handle the URI of any resource they | | a URI. Servers MUST be able to handle the URI of any resource they | |
| serve, and SHOULD be able to handle URIs of unbounded length if they | | serve, and SHOULD be able to handle URIs of unbounded length if they | |
| provide GET-based forms that could generate such URIs. A server | | provide GET-based forms that could generate such URIs. A server | |
| SHOULD return 414 (Request-URI Too Long) status if a URI is longer | | SHOULD return 414 (Request-URI Too Long) status if a URI is longer | |
| than the server can handle (see Section 10.4.15). | | than the server can handle (see Section 10.4.15). | |
| | | | |
| Note: Servers ought to be cautious about depending on URI lengths | | Note: Servers ought to be cautious about depending on URI lengths | |
| above 255 bytes, because some older client or proxy | | above 255 bytes, because some older client or proxy | |
| | | | |
| skipping to change at page 26, line 17 | | skipping to change at page 25, line 17 | |
| The "http" scheme is used to locate network resources via the HTTP | | The "http" scheme is used to locate network resources via the HTTP | |
| protocol. This section defines the scheme-specific syntax and | | protocol. This section defines the scheme-specific syntax and | |
| semantics for http URLs. | | semantics for http URLs. | |
| | | | |
| http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] | | http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]] | |
| | | | |
| If the port is empty or not given, port 80 is assumed. The semantics | | If the port is empty or not given, port 80 is assumed. The semantics | |
| are that the identified resource is located at the server listening | | are that the identified resource is located at the server listening | |
| for TCP connections on that port of that host, and the Request-URI | | for TCP connections on that port of that host, and the Request-URI | |
| for the resource is abs_path (Section 5.1.2). The use of IP | | for the resource is abs_path (Section 5.1.2). The use of IP | |
|
| addresses in URLs SHOULD be avoided whenever possible (see RFC 1900 | | addresses in URLs SHOULD be avoided whenever possible (see | |
| [24]). If the abs_path is not present in the URL, it MUST be given | | [RFC1900]). If the abs_path is not present in the URL, it MUST be | |
| as "/" when used as a Request-URI for a resource (Section 5.1.2). If | | given as "/" when used as a Request-URI for a resource | |
| a proxy receives a host name which is not a fully qualified domain | | (Section 5.1.2). If a proxy receives a host name which is not a | |
| name, it MAY add its domain to the host name it received. If a proxy | | fully qualified domain name, it MAY add its domain to the host name | |
| receives a fully qualified domain name, the proxy MUST NOT change the | | it received. If a proxy receives a fully qualified domain name, the | |
| host name. | | proxy MUST NOT change the host name. | |
| | | | |
| 3.2.3. URI Comparison | | 3.2.3. URI Comparison | |
| | | | |
| When comparing two URIs to decide if they match or not, a client | | When comparing two URIs to decide if they match or not, a client | |
| SHOULD use a case-sensitive octet-by-octet comparison of the entire | | SHOULD use a case-sensitive octet-by-octet comparison of the entire | |
| URIs, with these exceptions: | | URIs, with these exceptions: | |
| | | | |
| o A port that is empty or not given is equivalent to the default | | o A port that is empty or not given is equivalent to the default | |
| port for that URI-reference; | | port for that URI-reference; | |
| | | | |
| o Comparisons of host names MUST be case-insensitive; | | o Comparisons of host names MUST be case-insensitive; | |
| | | | |
| o Comparisons of scheme names MUST be case-insensitive; | | o Comparisons of scheme names MUST be case-insensitive; | |
| | | | |
| o An empty abs_path is equivalent to an abs_path of "/". | | o An empty abs_path is equivalent to an abs_path of "/". | |
| | | | |
|
| Characters other than those in the "reserved" set (see RFC 2396 [42]) | | Characters other than those in the "reserved" set (see [RFC2396]) are | |
| are equivalent to their ""%" HEX HEX" encoding. | | equivalent to their ""%" HEX HEX" encoding. | |
| | | | |
| For example, the following three URIs are equivalent: | | For example, the following three URIs are equivalent: | |
| | | | |
|
| http://abc.com:80/~smith/home.html | | http://example.com:80/~smith/home.html | |
| http://ABC.com/%7Esmith/home.html | | http://EXAMPLE.com/%7Esmith/home.html | |
| http://ABC.com:/%7esmith/home.html | | http://EXAMPLE.com:/%7esmith/home.html | |
| | | | |
| 3.3. Date/Time Formats | | 3.3. Date/Time Formats | |
| | | | |
| 3.3.1. Full Date | | 3.3.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 822, updated by RFC 1123 | | Sun, 06 Nov 1994 08:49:37 GMT ; [RFC822], updated by [RFC1123] | |
| Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 | | Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by [RFC1036] | |
| 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 RFC 1123 [8] (an update to | | a fixed-length subset of that defined by [RFC1123] (an update to | |
| RFC 822 [9]). The second format is in common use, but is based on | | [RFC822]). The second format is in common use, but is based on the | |
| the obsolete RFC 850 [12] date format and lacks a four-digit year. | | obsolete RFC 850 [RFC1036] date format and lacks a four-digit year. | |
| HTTP/1.1 clients and servers that parse the date value MUST accept | | HTTP/1.1 clients and servers that parse the date value MUST accept | |
| all three formats (for compatibility with HTTP/1.0), though they MUST | | all three formats (for compatibility with HTTP/1.0), though they MUST | |
| only generate the RFC 1123 format for representing HTTP-date values | | only generate the RFC 1123 format for representing HTTP-date values | |
| in header fields. See Appendix C for further information. | | in header fields. See Appendix C for further information. | |
| | | | |
| Note: Recipients of date values are encouraged to be robust in | | Note: Recipients of date values are encouraged to be robust in | |
| accepting date values that may have been sent by non-HTTP | | accepting date values that may have been sent by non-HTTP | |
| applications, as is sometimes the case when retrieving or posting | | applications, as is sometimes the case when retrieving or posting | |
| messages via proxies/gateways to SMTP or NNTP. | | messages via proxies/gateways to SMTP or NNTP. | |
| | | | |
| | | | |
| skipping to change at page 29, line 15 | | skipping to change at page 28, line 15 | |
| to characters. In particular, use of external profiling information | | to characters. In particular, use of external profiling information | |
| to determine the exact mapping is not permitted. | | to determine the exact mapping is not permitted. | |
| | | | |
| Note: This use of the term "character set" is more commonly | | Note: This use of the term "character set" is more commonly | |
| referred to as a "character encoding." However, since HTTP and | | referred to as a "character encoding." However, since HTTP and | |
| MIME share the same registry, it is important that the terminology | | MIME share the same registry, it is important that the terminology | |
| also be shared. | | also be shared. | |
| | | | |
| HTTP character sets are identified by case-insensitive tokens. The | | HTTP character sets are identified by case-insensitive tokens. The | |
| complete set of tokens is defined by the IANA Character Set registry | | complete set of tokens is defined by the IANA Character Set registry | |
|
| [19]. | | [RFC1700]. | |
| | | | |
| charset = token | | charset = token | |
| | | | |
| Although HTTP allows an arbitrary token to be used as a charset | | Although HTTP allows an arbitrary token to be used as a charset | |
| value, any token that has a predefined value within the IANA | | value, any token that has a predefined value within the IANA | |
|
| Character Set registry [19] MUST represent the character set defined | | Character Set registry [RFC1700] MUST represent the character set | |
| by that registry. Applications SHOULD limit their use of character | | defined by that registry. Applications SHOULD limit their use of | |
| sets to those defined by the IANA registry. | | character sets to those defined by the IANA registry. | |
| | | | |
| HTTP uses charset in two contexts: within an Accept-Charset request | | HTTP uses charset in two contexts: within an Accept-Charset request | |
| header (in which the charset value is an unquoted token) and as the | | header (in which the charset value is an unquoted token) and as the | |
| value of a parameter in a Content-Type header (within a request or | | value of a parameter in a Content-Type header (within a request or | |
| response), in which case the parameter value of the charset parameter | | response), in which case the parameter value of the charset parameter | |
| may be quoted. | | may be quoted. | |
| | | | |
|
| Implementors should be aware of IETF character set requirements [38] | | Implementors should be aware of IETF character set requirements | |
| [41]. | | [RFC2279] [RFC2277]. | |
| | | | |
| 3.4.1. Missing Charset | | 3.4.1. Missing Charset | |
| | | | |
| Some HTTP/1.0 software has interpreted a Content-Type header without | | Some HTTP/1.0 software has interpreted a Content-Type header without | |
| charset parameter incorrectly to mean "recipient should guess." | | charset parameter incorrectly to mean "recipient should guess." | |
| Senders wishing to defeat this behavior MAY include a charset | | Senders wishing to defeat this behavior MAY include a charset | |
| parameter even when the charset is ISO-8859-1 and SHOULD do so when | | parameter even when the charset is ISO-8859-1 and SHOULD do so when | |
| it is known that it will not confuse the recipient. | | it is known that it will not confuse the recipient. | |
| | | | |
| Unfortunately, some older HTTP/1.0 clients did not deal properly with | | Unfortunately, some older HTTP/1.0 clients did not deal properly with | |
| | | | |
| skipping to change at page 30, line 30 | | skipping to change at page 29, line 30 | |
| indicates what decoding mechanism will be required to remove the | | indicates what decoding mechanism will be required to remove the | |
| encoding. | | encoding. | |
| | | | |
| The Internet Assigned Numbers Authority (IANA) acts as a registry for | | The Internet Assigned Numbers Authority (IANA) acts as a registry for | |
| content-coding value tokens. Initially, the registry contains the | | content-coding value tokens. Initially, the registry contains the | |
| following tokens: | | following tokens: | |
| | | | |
| gzip | | gzip | |
| | | | |
| An encoding format produced by the file compression program "gzip" | | An encoding format produced by the file compression program "gzip" | |
|
| (GNU zip) as described in RFC 1952 [25]. This format is a Lempel- | | (GNU zip) as described in [RFC1952]. This format is a Lempel-Ziv | |
| Ziv coding (LZ77) with a 32 bit CRC. | | coding (LZ77) with a 32 bit CRC. | |
| | | | |
| compress | | compress | |
| | | | |
| The encoding format produced by the common UNIX file compression | | The encoding format produced by the common UNIX file compression | |
| program "compress". This format is an adaptive Lempel-Ziv-Welch | | program "compress". This format is an adaptive Lempel-Ziv-Welch | |
| coding (LZW). | | coding (LZW). | |
| | | | |
| Use of program names for the identification of encoding formats is | | Use of program names for the identification of encoding formats is | |
| not desirable and is discouraged for future encodings. Their use | | not desirable and is discouraged for future encodings. Their use | |
| here is representative of historical practice, not good design. | | here is representative of historical practice, not good design. | |
| For compatibility with previous implementations of HTTP, | | For compatibility with previous implementations of HTTP, | |
| applications SHOULD consider "x-gzip" and "x-compress" to be | | applications SHOULD consider "x-gzip" and "x-compress" to be | |
| equivalent to "gzip" and "compress" respectively. | | equivalent to "gzip" and "compress" respectively. | |
| | | | |
| deflate | | deflate | |
| | | | |
|
| The "zlib" format defined in RFC 1950 [31] in combination with the | | The "zlib" format defined in [RFC1950] in combination with the | |
| "deflate" compression mechanism described in RFC 1951 [29]. | | "deflate" compression mechanism described in [RFC1951]. | |
| | | | |
| identity | | identity | |
| The default (identity) encoding; the use of no transformation | | The default (identity) encoding; the use of no transformation | |
| whatsoever. This content-coding is used only in the Accept- | | whatsoever. This content-coding is used only in the Accept- | |
| Encoding header, and SHOULD NOT be used in the Content-Encoding | | Encoding header, and SHOULD NOT be used in the Content-Encoding | |
| header. | | header. | |
| | | | |
| New content-coding value tokens SHOULD be registered; to allow | | New content-coding value tokens SHOULD be registered; to allow | |
| interoperability between clients and servers, specifications of the | | interoperability between clients and servers, specifications of the | |
| content coding algorithms needed to implement a new value SHOULD be | | content coding algorithms needed to implement a new value SHOULD be | |
| | | | |
| skipping to change at page 31, line 45 | | skipping to change at page 30, line 45 | |
| | | | |
| 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 is | | transfer-codings MUST include "chunked", unless the message is | |
| terminated by closing the connection. When the "chunked" transfer- | | terminated by closing the connection. When the "chunked" transfer- | |
| coding is used, it MUST be the last transfer-coding applied to the | | coding is used, it MUST be the last transfer-coding applied to the | |
| message-body. The "chunked" transfer-coding MUST NOT be applied more | | message-body. The "chunked" transfer-coding MUST NOT be applied more | |
| than once to a message-body. These rules allow the recipient to | | than once to a message-body. These rules allow the recipient to | |
| determine the transfer-length of the message (Section 4.4). | | determine the transfer-length of the message (Section 4.4). | |
| | | | |
| Transfer-codings are analogous to the Content-Transfer-Encoding | | Transfer-codings are analogous to the Content-Transfer-Encoding | |
|
| values of MIME [7], which were designed to enable safe transport of | | values of MIME [RFC2045], which were designed to enable safe | |
| binary data over a 7-bit transport service. However, safe transport | | transport of binary data over a 7-bit transport service. However, | |
| has a different focus for an 8bit-clean transfer protocol. In HTTP, | | safe transport has a different focus for an 8bit-clean transfer | |
| the only unsafe characteristic of message-bodies is the difficulty in | | protocol. In HTTP, the only unsafe characteristic of message-bodies | |
| determining the exact body length (Section 7.2.2), or the desire to | | is the difficulty in determining the exact body length | |
| encrypt data over a shared transport. | | (Section 7.2.2), or the desire to encrypt data over a shared | |
| | | transport. | |
| | | | |
| The Internet Assigned Numbers Authority (IANA) acts as a registry for | | The Internet Assigned Numbers Authority (IANA) acts as a registry for | |
| transfer-coding value tokens. Initially, the registry contains the | | transfer-coding value tokens. Initially, the registry contains the | |
| following tokens: "chunked" (Section 3.6.1), "gzip" (Section 3.5), | | following tokens: "chunked" (Section 3.6.1), "gzip" (Section 3.5), | |
| "compress" (Section 3.5), and "deflate" (Section 3.5). | | "compress" (Section 3.5), and "deflate" (Section 3.5). | |
| | | | |
| New transfer-coding value tokens SHOULD be registered in the same way | | New transfer-coding value tokens SHOULD be registered in the same way | |
| as new content-coding value tokens (Section 3.5). | | as new content-coding value tokens (Section 3.5). | |
| | | | |
| A server which receives an entity-body with a transfer-coding it does | | A server which receives an entity-body with a transfer-coding it does | |
| | | | |
| skipping to change at page 33, line 36 | | skipping to change at page 32, line 36 | |
| | | | |
| An example process for decoding a Chunked-Body is presented in | | An example process for decoding a Chunked-Body is presented in | |
| Appendix D.6. | | Appendix D.6. | |
| | | | |
| All HTTP/1.1 applications MUST be able to receive and decode the | | All HTTP/1.1 applications MUST be able to receive and decode the | |
| "chunked" transfer-coding, and MUST ignore chunk-extension extensions | | "chunked" transfer-coding, and MUST ignore chunk-extension extensions | |
| they do not understand. | | they do not understand. | |
| | | | |
| 3.7. Media Types | | 3.7. Media Types | |
| | | | |
|
| HTTP uses Internet Media Types [17] in the Content-Type | | HTTP uses Internet Media Types [RFC1590] in the Content-Type | |
| (Section 14.17) and Accept (Section 14.1) header fields in order to | | (Section 14.17) and Accept (Section 14.1) header fields in order to | |
| provide open and extensible data typing and type negotiation. | | provide open and extensible data typing and type negotiation. | |
| | | | |
| media-type = type "/" subtype *( ";" parameter ) | | media-type = type "/" subtype *( ";" parameter ) | |
| type = token | | type = token | |
| subtype = token | | subtype = token | |
| | | | |
| Parameters MAY follow the type/subtype in the form of attribute/value | | Parameters MAY follow the type/subtype in the form of attribute/value | |
| pairs (as defined in Section 3.6). | | pairs (as defined in Section 3.6). | |
| | | | |
| | | | |
| skipping to change at page 34, line 12 | | skipping to change at page 33, line 12 | |
| attribute and its value. The presence or absence of a parameter | | attribute and its value. The presence or absence of a parameter | |
| might be significant to the processing of a media-type, depending on | | might be significant to the processing of a media-type, depending on | |
| its definition within the media type registry. | | its definition within the media type registry. | |
| | | | |
| Note that some older HTTP applications do not recognize media type | | Note that some older HTTP applications do not recognize media type | |
| parameters. When sending data to older HTTP applications, | | parameters. When sending data to older HTTP applications, | |
| implementations SHOULD only use media type parameters when they are | | implementations SHOULD only use media type parameters when they are | |
| required by that type/subtype definition. | | required by that type/subtype definition. | |
| | | | |
| Media-type values are registered with the Internet Assigned Number | | Media-type values are registered with the Internet Assigned Number | |
|
| Authority (IANA [19]). The media type registration process is | | Authority (IANA [RFC1700]). The media type registration process is | |
| outlined in RFC 1590 [17]. Use of non-registered media types is | | outlined in [RFC1590]. Use of non-registered media types is | |
| discouraged. | | discouraged. | |
| | | | |
| 3.7.1. Canonicalization and Text Defaults | | 3.7.1. Canonicalization and Text Defaults | |
| | | | |
| Internet media types are registered with a canonical form. An | | Internet media types are registered with a canonical form. An | |
| entity-body transferred via HTTP messages MUST be represented in the | | entity-body transferred via HTTP messages MUST be represented in the | |
| appropriate canonical form prior to its transmission except for | | appropriate canonical form prior to its transmission except for | |
| "text" types, as defined in the next paragraph. | | "text" types, as defined in the next paragraph. | |
| | | | |
| When in canonical form, media subtypes of the "text" type use CRLF as | | When in canonical form, media subtypes of the "text" type use CRLF as | |
| | | | |
| skipping to change at page 35, line 9 | | skipping to change at page 34, line 9 | |
| parameter is provided by the sender, media subtypes of the "text" | | parameter is provided by the sender, media subtypes of the "text" | |
| type are defined to have a default charset value of "ISO-8859-1" when | | type are defined to have a default charset value of "ISO-8859-1" when | |
| received via HTTP. Data in character sets other than "ISO-8859-1" or | | received via HTTP. Data in character sets other than "ISO-8859-1" or | |
| its subsets MUST be labeled with an appropriate charset value. See | | its subsets MUST be labeled with an appropriate charset value. See | |
| Section 3.4.1 for compatibility problems. | | Section 3.4.1 for compatibility problems. | |
| | | | |
| 3.7.2. Multipart Types | | 3.7.2. Multipart Types | |
| | | | |
| MIME provides for a number of "multipart" types -- encapsulations of | | MIME provides for a number of "multipart" types -- encapsulations of | |
| one or more entities within a single message-body. All multipart | | one or more entities within a single message-body. All multipart | |
|
| types share a common syntax, as defined in section 5.1.1 of RFC 2046 | | types share a common syntax, as defined in Section 5.1.1 of | |
| [40], and MUST include a boundary parameter as part of the media type | | [RFC2046], and MUST include a boundary parameter as part of the media | |
| value. The message body is itself a protocol element and MUST | | type value. The message body is itself a protocol element and MUST | |
| therefore use only CRLF to represent line breaks between body-parts. | | therefore use only CRLF to represent line breaks between body-parts. | |
| Unlike in RFC 2046, the epilogue of any multipart message MUST be | | Unlike in RFC 2046, the epilogue of any multipart message MUST be | |
| empty; HTTP applications MUST NOT transmit the epilogue (even if the | | empty; HTTP applications MUST NOT transmit the epilogue (even if the | |
| original multipart contains an epilogue). These restrictions exist | | original multipart contains an epilogue). These restrictions exist | |
| in order to preserve the self-delimiting nature of a multipart | | in order to preserve the self-delimiting nature of a multipart | |
| message-body, wherein the "end" of the message-body is indicated by | | message-body, wherein the "end" of the message-body is indicated by | |
| the ending multipart boundary. | | the ending multipart boundary. | |
| | | | |
| In general, HTTP treats a multipart message-body no differently than | | In general, HTTP treats a multipart message-body no differently than | |
| any other media type: strictly as payload. The one exception is the | | any other media type: strictly as payload. The one exception is the | |
| "multipart/byteranges" type (Appendix B) when it appears in a 206 | | "multipart/byteranges" type (Appendix B) when it appears in a 206 | |
| (Partial Content) response, which will be interpreted by some HTTP | | (Partial Content) response, which will be interpreted by some HTTP | |
|
| caching mechanisms as described in sections 13.5.4 and 14.16. In all | | caching mechanisms as described in Sections 13.5.4 and 14.16. In all | |
| other cases, an HTTP user agent SHOULD follow the same or similar | | other cases, an HTTP user agent SHOULD follow the same or similar | |
| behavior as a MIME user agent would upon receipt of a multipart type. | | behavior as a MIME user agent would upon receipt of a multipart type. | |
| The MIME header fields within each body-part of a multipart message- | | The MIME header fields within each body-part of a multipart message- | |
| body do not have any significance to HTTP beyond that defined by | | body do not have any significance to HTTP beyond that defined by | |
| their MIME semantics. | | their MIME semantics. | |
| | | | |
| In general, an HTTP user agent SHOULD follow the same or similar | | In general, an HTTP user agent SHOULD follow the same or similar | |
| behavior as a MIME user agent would upon receipt of a multipart type. | | behavior as a MIME user agent would upon receipt of a multipart type. | |
| If an application receives an unrecognized multipart subtype, the | | If an application receives an unrecognized multipart subtype, the | |
| application MUST treat it as being equivalent to "multipart/mixed". | | application MUST treat it as being equivalent to "multipart/mixed". | |
| | | | |
| Note: The "multipart/form-data" type has been specifically defined | | Note: The "multipart/form-data" type has been specifically defined | |
| for carrying form data suitable for processing via the POST | | for carrying form data suitable for processing via the POST | |
|
| request method, as described in RFC 1867 [15]. | | request method, as described in [RFC1867]. | |
| | | | |
| 3.8. Product Tokens | | 3.8. Product Tokens | |
| | | | |
| Product tokens are used to allow communicating applications to | | Product tokens are used to allow communicating applications to | |
| identify themselves by software name and version. Most fields using | | identify themselves by software name and version. Most fields using | |
| product tokens also allow sub-products which form a significant part | | product tokens also allow sub-products which form a significant part | |
| of the application to be listed, separated by white space. By | | of the application to be listed, separated by white space. By | |
| convention, the products are listed in order of their significance | | convention, the products are listed in order of their significance | |
| for identifying the application. | | for identifying the application. | |
| | | | |
| | | | |
| skipping to change at page 36, line 42 | | skipping to change at page 35, line 42 | |
| | | | |
| 3.10. Language Tags | | 3.10. Language Tags | |
| | | | |
| A language tag identifies a natural language spoken, written, or | | A language tag identifies a natural language spoken, written, or | |
| otherwise conveyed by human beings for communication of information | | otherwise conveyed by human beings for communication of information | |
| to other human beings. Computer languages are explicitly excluded. | | to other human beings. Computer languages are explicitly excluded. | |
| HTTP uses language tags within the Accept-Language and Content- | | HTTP uses language tags within the Accept-Language and Content- | |
| Language fields. | | Language fields. | |
| | | | |
| The syntax and registry of HTTP language tags is the same as that | | The syntax and registry of HTTP language tags is the same as that | |
|
| defined by RFC 1766 [1]. In summary, a language tag is composed of 1 | | defined by [RFC1766]. In summary, a language tag is composed of 1 or | |
| or more parts: A primary language tag and a possibly empty series of | | more parts: A primary language tag and a possibly empty series of | |
| subtags: | | subtags: | |
| | | | |
| language-tag = primary-tag *( "-" subtag ) | | language-tag = primary-tag *( "-" subtag ) | |
| primary-tag = 1*8ALPHA | | primary-tag = 1*8ALPHA | |
| subtag = 1*8ALPHA | | subtag = 1*8ALPHA | |
| | | | |
| White space is not allowed within the tag and all tags are case- | | White space is not allowed within the tag and all tags are case- | |
| insensitive. The name space of language tags is administered by the | | insensitive. The name space of language tags is administered by the | |
| IANA. Example tags include: | | IANA. Example tags include: | |
| | | | |
| | | | |
| skipping to change at page 39, line 15 | | skipping to change at page 38, line 15 | |
| 4. HTTP Message | | 4. HTTP Message | |
| | | | |
| 4.1. Message Types | | 4.1. Message Types | |
| | | | |
| HTTP messages consist of requests from client to server and responses | | HTTP messages consist of requests from client to server and responses | |
| from server to client. | | from server to client. | |
| | | | |
| HTTP-message = Request | Response ; HTTP/1.1 messages | | HTTP-message = Request | Response ; HTTP/1.1 messages | |
| | | | |
| Request (Section 5) and Response (Section 6) messages use the generic | | Request (Section 5) and Response (Section 6) messages use the generic | |
|
| message format of RFC 822 [9] for transferring entities (the payload | | message format of [RFC822] for transferring entities (the payload of | |
| of the message). Both types of message consist of a start-line, zero | | the message). Both types of message consist of a start-line, zero or | |
| or more header fields (also known as "headers"), an empty line (i.e., | | more header fields (also known as "headers"), an empty line (i.e., a | |
| a line with nothing preceding the CRLF) indicating the end of the | | line with nothing preceding the CRLF) indicating the end of the | |
| header fields, and possibly a message-body. | | header fields, and possibly a message-body. | |
| | | | |
| generic-message = start-line | | generic-message = start-line | |
| *(message-header CRLF) | | *(message-header CRLF) | |
| CRLF | | CRLF | |
| [ message-body ] | | [ message-body ] | |
| start-line = Request-Line | Status-Line | | start-line = Request-Line | Status-Line | |
| | | | |
| In the interest of robustness, servers SHOULD ignore any empty | | In the interest of robustness, servers SHOULD ignore any empty | |
| line(s) received where a Request-Line is expected. In other words, | | line(s) received where a Request-Line is expected. In other words, | |
| | | | |
| skipping to change at page 39, line 42 | | skipping to change at page 38, line 42 | |
| Certain buggy HTTP/1.0 client implementations generate extra CRLF's | | Certain buggy HTTP/1.0 client implementations generate extra CRLF's | |
| after a POST request. To restate what is explicitly forbidden by the | | after a POST request. To restate what is explicitly forbidden by the | |
| BNF, an HTTP/1.1 client MUST NOT preface or follow a request with an | | BNF, an HTTP/1.1 client MUST NOT preface or follow a request with an | |
| extra CRLF. | | extra CRLF. | |
| | | | |
| 4.2. Message Headers | | 4.2. Message Headers | |
| | | | |
| HTTP header fields, which include general-header (Section 4.5), | | HTTP header fields, which include general-header (Section 4.5), | |
| request-header (Section 5.3), response-header (Section 6.2), and | | request-header (Section 5.3), response-header (Section 6.2), and | |
| entity-header (Section 7.1) fields, follow the same generic format as | | entity-header (Section 7.1) fields, follow the same generic format as | |
|
| that given in Section 3.1 of RFC 822 [9]. Each header field consists | | that given in Section 3.1 of [RFC822]. Each header field consists of | |
| of a name followed by a colon (":") and the field value. Field names | | a name followed by a colon (":") and the field value. Field names | |
| are case-insensitive. The field value MAY be preceded by any amount | | are case-insensitive. The field value MAY be preceded by any amount | |
| of LWS, though a single SP is preferred. Header fields can be | | of LWS, though a single SP is preferred. Header fields can be | |
| extended over multiple lines by preceding each extra line with at | | extended over multiple lines by preceding each extra line with at | |
| least one SP or HT. Applications ought to follow "common form", | | least one SP or HT. Applications ought to follow "common form", | |
| where one is known or indicated, when generating HTTP constructs, | | where one is known or indicated, when generating HTTP constructs, | |
| since there might exist some implementations that fail to accept | | since there might exist some implementations that fail to accept | |
| anything beyond the common forms. | | anything beyond the common forms. | |
| | | | |
| message-header = field-name ":" [ field-value ] | | message-header = field-name ":" [ field-value ] | |
| field-name = token | | field-name = token | |
| | | | |
| skipping to change at page 46, line 14 | | skipping to change at page 45, line 14 | |
| | | | |
| GET /pub/WWW/TheProject.html HTTP/1.1 | | GET /pub/WWW/TheProject.html HTTP/1.1 | |
| Host: www.example.org | | Host: www.example.org | |
| | | | |
| followed by the remainder of the Request. Note that the absolute | | followed by the remainder of the Request. Note that the absolute | |
| path cannot be empty; if none is present in the original URI, it MUST | | path cannot be empty; if none is present in the original URI, it MUST | |
| be given as "/" (the server root). | | be given as "/" (the server root). | |
| | | | |
| The Request-URI is transmitted in the format specified in | | The Request-URI is transmitted in the format specified in | |
| Section 3.2.1. If the Request-URI is encoded using the "% HEX HEX" | | Section 3.2.1. If the Request-URI is encoded using the "% HEX HEX" | |
|
| encoding [42], the origin server MUST decode the Request-URI in order | | encoding [RFC2396], the origin server MUST decode the Request-URI in | |
| to properly interpret the request. Servers SHOULD respond to invalid | | order to properly interpret the request. Servers SHOULD respond to | |
| Request-URIs with an appropriate status code. | | invalid Request-URIs with an appropriate status code. | |
| | | | |
| A transparent proxy MUST NOT rewrite the "abs_path" part of the | | A transparent proxy MUST NOT rewrite the "abs_path" part of the | |
| received Request-URI when forwarding it to the next inbound server, | | received Request-URI when forwarding it to the next inbound server, | |
| except as noted above to replace a null abs_path with "/". | | except as noted above to replace a null abs_path with "/". | |
| | | | |
| Note: The "no rewrite" rule prevents the proxy from changing the | | Note: The "no rewrite" rule prevents the proxy from changing the | |
| meaning of the request when the origin server is improperly using | | meaning of the request when the origin server is improperly using | |
| a non-reserved URI character for a reserved purpose. Implementors | | a non-reserved URI character for a reserved purpose. Implementors | |
| should be aware that some pre-HTTP/1.1 proxies have been known to | | should be aware that some pre-HTTP/1.1 proxies have been known to | |
| rewrite the Request-URI. | | rewrite the Request-URI. | |
| | | | |
| skipping to change at page 54, line 17 | | skipping to change at page 53, line 17 | |
| 8.1. Persistent Connections | | 8.1. Persistent Connections | |
| | | | |
| 8.1.1. Purpose | | 8.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 [26] [30]. Implementation experience | | implementation are available [Pad1995] [Spero]. Implementation | |
| and measurements of actual HTTP/1.1 (RFC 2068) implementations show | | experience and measurements of actual HTTP/1.1 (RFC 2068) | |
| good results [39]. Alternatives have also been explored, for | | implementations show good results [Nie1997]. Alternatives have also | |
| example, T/TCP [27]. | | been explored, for 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 56, line 29 | | skipping to change at page 55, 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 14.10. | | Section 14.10. | |
| | | | |
| 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 RFC 2068 [33] for information and | | with an HTTP/1.0 client (but see [RFC2068] for information and | |
| discussion of the problems with the Keep-Alive header implemented by | | discussion of the problems with the Keep-Alive header implemented by | |
| many HTTP/1.0 clients). | | many HTTP/1.0 clients). | |
| | | | |
| 8.1.4. Practical Considerations | | 8.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 | |
| | | | |
| skipping to change at page 67, line 9 | | skipping to change at page 66, line 9 | |
| proxies forwarding messages in an infinite loop. | | proxies forwarding messages in an infinite loop. | |
| | | | |
| If the request is valid, the response SHOULD contain the entire | | If the request is valid, the response SHOULD contain the entire | |
| request message in the entity-body, with a Content-Type of "message/ | | request message in the entity-body, with a Content-Type of "message/ | |
| http". Responses to this method MUST NOT be cached. | | http". Responses to this method MUST NOT be cached. | |
| | | | |
| 9.9. CONNECT | | 9.9. CONNECT | |
| | | | |
| This specification reserves the method name CONNECT for use with a | | This specification reserves the method name CONNECT for use with a | |
| proxy that can dynamically switch to being a tunnel (e.g. SSL | | proxy that can dynamically switch to being a tunnel (e.g. SSL | |
|
| tunneling [44]). | | tunneling [Luo1998]). | |
| | | | |
| 10. Status Code Definitions | | 10. Status Code Definitions | |
| | | | |
| Each Status-Code is described below, including a description of which | | Each Status-Code is described below, including a description of which | |
| method(s) it can follow and any metainformation required in the | | method(s) it can follow and any metainformation required in the | |
| response. | | response. | |
| | | | |
| 10.1. Informational 1xx | | 10.1. Informational 1xx | |
| | | | |
| This class of status code indicates a provisional response, | | This class of status code indicates a provisional response, | |
| | | | |
| skipping to change at page 74, line 24 | | skipping to change at page 73, line 24 | |
| respond with this status code. The 304 response MUST NOT contain a | | respond with this status code. The 304 response MUST NOT contain a | |
| message-body, and thus is always terminated by the first empty line | | message-body, and thus is always terminated by the first empty line | |
| after the header fields. | | after the header fields. | |
| | | | |
| The response MUST include the following header fields: | | The response MUST include the following header fields: | |
| | | | |
| o Date, unless its omission is required by Section 14.18.1 | | o Date, unless its omission is required by Section 14.18.1 | |
| | | | |
| If a clockless origin server obeys these rules, and proxies and | | If a clockless origin server obeys these rules, and proxies and | |
| clients add their own Date to any response received without one (as | | clients add their own Date to any response received without one (as | |
|
| already specified by [RFC 2068], section 14.19), caches will operate | | already specified by [RFC2068], Section 14.19), caches will operate | |
| correctly. | | correctly. | |
| | | | |
| o ETag and/or Content-Location, if the header would have been sent | | o ETag and/or Content-Location, if the header would have been sent | |
| in a 200 response to the same request | | in a 200 response to the same request | |
| | | | |
| o Expires, Cache-Control, and/or Vary, if the field-value might | | o Expires, Cache-Control, and/or Vary, if the field-value might | |
| differ from that sent in any previous response for the same | | differ from that sent in any previous response for the same | |
| variant | | variant | |
| | | | |
| If the conditional GET used a strong cache validator (see | | If the conditional GET used a strong cache validator (see | |
| | | | |
| skipping to change at page 76, line 29 | | skipping to change at page 75, line 29 | |
| challenge applicable to the requested resource. The client MAY | | challenge applicable to the requested resource. The client MAY | |
| repeat the request with a suitable Authorization header field | | repeat the request with a suitable Authorization header field | |
| (Section 14.8). If the request already included Authorization | | (Section 14.8). If the request already included Authorization | |
| credentials, then the 401 response indicates that authorization has | | credentials, then the 401 response indicates that authorization has | |
| been refused for those credentials. If the 401 response contains the | | been refused for those credentials. If the 401 response contains the | |
| same challenge as the prior response, and the user agent has already | | same challenge as the prior response, and the user agent has already | |
| attempted authentication at least once, then the user SHOULD be | | attempted authentication at least once, then the user SHOULD be | |
| presented the entity that was given in the response, since that | | presented the entity that was given in the response, since that | |
| entity might include relevant diagnostic information. HTTP access | | entity might include relevant diagnostic information. HTTP access | |
| authentication is explained in "HTTP Authentication: Basic and Digest | | authentication is explained in "HTTP Authentication: Basic and Digest | |
|
| Access Authentication" [43]. | | Access Authentication" [RFC2617]. | |
| | | | |
| 10.4.3. 402 Payment Required | | 10.4.3. 402 Payment Required | |
| | | | |
| This code is reserved for future use. | | This code is reserved for future use. | |
| | | | |
| 10.4.4. 403 Forbidden | | 10.4.4. 403 Forbidden | |
| | | | |
| The server understood the request, but is refusing to fulfill it. | | The server understood the request, but is refusing to fulfill it. | |
| Authorization will not help and the request SHOULD NOT be repeated. | | Authorization will not help and the request SHOULD NOT be repeated. | |
| If the request method was not HEAD and the server wishes to make | | If the request method was not HEAD and the server wishes to make | |
| | | | |
| skipping to change at page 77, line 50 | | skipping to change at page 76, line 50 | |
| | | | |
| 10.4.8. 407 Proxy Authentication Required | | 10.4.8. 407 Proxy Authentication Required | |
| | | | |
| This code is similar to 401 (Unauthorized), but indicates that the | | This code is similar to 401 (Unauthorized), but indicates that the | |
| client must first authenticate itself with the proxy. The proxy MUST | | client must first authenticate itself with the proxy. The proxy MUST | |
| return a Proxy-Authenticate header field (Section 14.33) containing a | | return a Proxy-Authenticate header field (Section 14.33) containing a | |
| challenge applicable to the proxy for the requested resource. The | | challenge applicable to the proxy for the requested resource. The | |
| client MAY repeat the request with a suitable Proxy-Authorization | | client MAY repeat the request with a suitable Proxy-Authorization | |
| header field (Section 14.34). HTTP access authentication is | | header field (Section 14.34). HTTP access authentication is | |
| explained in "HTTP Authentication: Basic and Digest Access | | explained in "HTTP Authentication: Basic and Digest Access | |
|
| Authentication" [43]. | | Authentication" [RFC2617]. | |
| | | | |
| 10.4.9. 408 Request Timeout | | 10.4.9. 408 Request Timeout | |
| | | | |
| The client did not produce a request within the time that the server | | The client did not produce a request within the time that the server | |
| was prepared to wait. The client MAY repeat the request without | | was prepared to wait. The client MAY repeat the request without | |
| modifications at any later time. | | modifications at any later time. | |
| | | | |
| 10.4.10. 409 Conflict | | 10.4.10. 409 Conflict | |
| | | | |
| The request could not be completed due to a conflict with the current | | The request could not be completed due to a conflict with the current | |
| | | | |
| skipping to change at page 82, line 12 | | skipping to change at page 81, line 12 | |
| contain an entity describing why that version is not supported and | | contain an entity describing why that version is not supported and | |
| what other protocols are supported by that server. | | what other protocols are supported by that server. | |
| | | | |
| 11. Access Authentication | | 11. Access Authentication | |
| | | | |
| HTTP provides several OPTIONAL challenge-response authentication | | HTTP provides several OPTIONAL challenge-response authentication | |
| mechanisms which can be used by a server to challenge a client | | mechanisms which can be used by a server to challenge a client | |
| request and by a client to provide authentication information. The | | request and by a client to provide authentication information. The | |
| general framework for access authentication, and the specification of | | general framework for access authentication, and the specification of | |
| "basic" and "digest" authentication, are specified in "HTTP | | "basic" and "digest" authentication, are specified in "HTTP | |
|
| Authentication: Basic and Digest Access Authentication" [43]. This | | Authentication: Basic and Digest Access Authentication" [RFC2617]. | |
| specification adopts the definitions of "challenge" and "credentials" | | This specification adopts the definitions of "challenge" and | |
| from that specification. | | "credentials" from that specification. | |
| | | | |
| 12. Content Negotiation | | 12. Content Negotiation | |
| | | | |
| Most HTTP responses include an entity which contains information for | | Most HTTP responses include an entity which contains information for | |
| interpretation by a human user. Naturally, it is desirable to supply | | interpretation by a human user. Naturally, it is desirable to supply | |
| the user with the "best available" entity corresponding to the | | the user with the "best available" entity corresponding to the | |
| request. Unfortunately for servers and caches, not all users have | | request. Unfortunately for servers and caches, not all users have | |
| the same preferences for what is "best," and not all user agents are | | the same preferences for what is "best," and not all user agents are | |
| equally capable of rendering all entity types. For that reason, HTTP | | equally capable of rendering all entity types. For that reason, HTTP | |
| has provisions for several mechanisms for "content negotiation" -- | | has provisions for several mechanisms for "content negotiation" -- | |
| | | | |
| skipping to change at page 87, line 19 | | skipping to change at page 86, line 19 | |
| ought to err on the side of maintaining transparency unless a | | ought to err on the side of maintaining transparency unless a | |
| careful and complete analysis shows significant benefits in | | careful and complete analysis shows significant benefits in | |
| breaking transparency. | | breaking transparency. | |
| | | | |
| 13.1. | | 13.1. | |
| | | | |
| 13.1.1. Cache Correctness | | 13.1.1. Cache Correctness | |
| | | | |
| A correct cache MUST respond to a request with the most up-to-date | | A correct cache MUST respond to a request with the most up-to-date | |
| response held by the cache that is appropriate to the request (see | | response held by the cache that is appropriate to the request (see | |
|
| sections 13.2.5, 13.2.6, and 13.12) which meets one of the following | | Sections 13.2.5, 13.2.6, and 13.12) which meets one of the following | |
| conditions: | | conditions: | |
| | | | |
| 1. It has been checked for equivalence with what the origin server | | 1. It has been checked for equivalence with what the origin server | |
| would have returned by revalidating the response with the origin | | would have returned by revalidating the response with the origin | |
| server (Section 13.3); | | server (Section 13.3); | |
| | | | |
| 2. It is "fresh enough" (see Section 13.2). In the default case, | | 2. It is "fresh enough" (see Section 13.2). In the default case, | |
| this means it meets the least restrictive freshness requirement | | this means it meets the least restrictive freshness requirement | |
| of the client, origin server, and cache (see Section 14.9); if | | of the client, origin server, and cache (see Section 14.9); if | |
| the origin server so specifies, it is the freshness requirement | | the origin server so specifies, it is the freshness requirement | |
| of the origin server alone. If a stored response is not "fresh | | of the origin server alone. If a stored response is not "fresh | |
| enough" by the most restrictive freshness requirement of both the | | enough" by the most restrictive freshness requirement of both the | |
| client and the origin server, in carefully considered | | client and the origin server, in carefully considered | |
| circumstances the cache MAY still return the response with the | | circumstances the cache MAY still return the response with the | |
|
| appropriate Warning header (see section 13.1.5 and 14.46), unless | | appropriate Warning header (see Section 13.1.5 and 14.46), unless | |
| such a response is prohibited (e.g., by a "no-store" cache- | | such a response is prohibited (e.g., by a "no-store" cache- | |
| directive, or by a "no-cache" cache-request-directive; see | | directive, or by a "no-cache" cache-request-directive; see | |
| Section 14.9). | | Section 14.9). | |
| | | | |
| 3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect), or | | 3. It is an appropriate 304 (Not Modified), 305 (Proxy Redirect), or | |
| error (4xx or 5xx) response message. | | error (4xx or 5xx) response message. | |
| | | | |
| If the cache can not communicate with the origin server, then a | | If the cache can not communicate with the origin server, then a | |
| correct cache SHOULD respond as above if the response can be | | correct cache SHOULD respond as above if the response can be | |
| correctly served from the cache; if not it MUST return an error or | | correctly served from the cache; if not it MUST return an error or | |
| | | | |
| skipping to change at page 92, line 20 | | skipping to change at page 91, line 20 | |
| 13.2.3. Age Calculations | | 13.2.3. Age Calculations | |
| | | | |
| In order to know if a cached entry is fresh, a cache needs to know if | | In order to know if a cached entry is fresh, a cache needs to know if | |
| its age exceeds its freshness lifetime. We discuss how to calculate | | its age exceeds its freshness lifetime. We discuss how to calculate | |
| the latter in Section 13.2.4; this section describes how to calculate | | the latter in Section 13.2.4; this section describes how to calculate | |
| the age of a response or cache entry. | | the age of a response or cache entry. | |
| | | | |
| In this discussion, we use the term "now" to mean "the current value | | In this discussion, we use the term "now" to mean "the current value | |
| of the clock at the host performing the calculation." Hosts that use | | of the clock at the host performing the calculation." Hosts that use | |
| HTTP, but especially hosts running origin servers and caches, SHOULD | | HTTP, but especially hosts running origin servers and caches, SHOULD | |
|
| use NTP [28] or some similar protocol to synchronize their clocks to | | use NTP [RFC1305] or some similar protocol to synchronize their | |
| a globally accurate time standard. | | clocks to a globally accurate time standard. | |
| | | | |
| HTTP/1.1 requires origin servers to send a Date header, if possible, | | HTTP/1.1 requires origin servers to send a Date header, if possible, | |
| with every response, giving the time at which the response was | | with every response, giving the time at which the response was | |
| generated (see Section 14.18). We use the term "date_value" to | | generated (see Section 14.18). We use the term "date_value" to | |
| denote the value of the Date header, in a form appropriate for | | denote the value of the Date header, in a form appropriate for | |
| arithmetic operations. | | arithmetic operations. | |
| | | | |
| HTTP/1.1 uses the Age response-header to convey the estimated age of | | HTTP/1.1 uses the Age response-header to convey the estimated age of | |
| the response message when obtained from a cache. The Age field value | | the response message when obtained from a cache. The Age field value | |
| is the cache's estimate of the amount of time since the response was | | is the cache's estimate of the amount of time since the response was | |
| | | | |
| skipping to change at page 98, line 6 | | skipping to change at page 97, line 6 | |
| 13.3.2. Entity Tag Cache Validators | | 13.3.2. Entity Tag Cache Validators | |
| | | | |
| The ETag response-header field value, an entity tag, provides for an | | The ETag response-header field value, an entity tag, provides for an | |
| "opaque" cache validator. This might allow more reliable validation | | "opaque" cache validator. This might allow more reliable validation | |
| in situations where it is inconvenient to store modification dates, | | in situations where it is inconvenient to store modification dates, | |
| where the one-second resolution of HTTP date values is not | | where the one-second resolution of HTTP date values is not | |
| sufficient, or where the origin server wishes to avoid certain | | sufficient, or where the origin server wishes to avoid certain | |
| paradoxes that might arise from the use of modification dates. | | paradoxes that might arise from the use of modification dates. | |
| | | | |
| Entity Tags are described in Section 3.11. The headers used with | | Entity Tags are described in Section 3.11. The headers used with | |
|
| entity tags are described in sections 14.19, 14.24, 14.26 and 14.44. | | entity tags are described in Sections 14.19, 14.24, 14.26 and 14.44. | |
| | | | |
| 13.3.3. Weak and Strong Validators | | 13.3.3. Weak and Strong Validators | |
| | | | |
| Since both origin servers and caches will compare two validators to | | Since both origin servers and caches will compare two validators to | |
| decide if they represent the same or different entities, one normally | | decide if they represent the same or different entities, one normally | |
| would expect that if the entity (the entity-body or any entity- | | would expect that if the entity (the entity-body or any entity- | |
| headers) changes in any way, then the associated validator would | | headers) changes in any way, then the associated validator would | |
| change as well. If this is true, then we call this validator a | | change as well. If this is true, then we call this validator a | |
| "strong validator." | | "strong validator." | |
| | | | |
| | | | |
| skipping to change at page 105, line 35 | | skipping to change at page 104, line 35 | |
| | | | |
| Warning: unnecessary modification of end-to-end headers might | | Warning: unnecessary modification of end-to-end headers might | |
| cause authentication failures if stronger authentication | | cause authentication failures if stronger authentication | |
| mechanisms are introduced in later versions of HTTP. Such | | mechanisms are introduced in later versions of HTTP. Such | |
| authentication mechanisms MAY rely on the values of header fields | | authentication mechanisms MAY rely on the values of header fields | |
| not listed here. | | not listed here. | |
| | | | |
| The Content-Length field of a request or response is added or deleted | | The Content-Length field of a request or response is added or deleted | |
| according to the rules in Section 4.4. A transparent proxy MUST | | according to the rules in Section 4.4. A transparent proxy MUST | |
| preserve the entity-length (Section 7.2.2) of the entity-body, | | preserve the entity-length (Section 7.2.2) of the entity-body, | |
|
| although it MAY change the transfer-length (section Section 4.4). | | although it MAY change the transfer-length (Section 4.4). | |
| | | | |
| 13.5.3. Combining Headers | | 13.5.3. Combining Headers | |
| | | | |
| When a cache makes a validating request to a server, and the server | | When a cache makes a validating request to a server, and the server | |
| provides a 304 (Not Modified) response or a 206 (Partial Content) | | provides a 304 (Not Modified) response or a 206 (Partial Content) | |
| response, the cache then constructs a response to send to the | | response, the cache then constructs a response to send to the | |
| requesting client. | | requesting client. | |
| | | | |
| If the status code is 304 (Not Modified), the cache uses the entity- | | If the status code is 304 (Not Modified), the cache uses the entity- | |
| body stored in the cache entry as the entity-body of this outgoing | | body stored in the cache entry as the entity-body of this outgoing | |
| | | | |
| skipping to change at page 110, line 38 | | skipping to change at page 109, line 38 | |
| prevent a proxy cache from sending a 100 (Continue) response before | | prevent a proxy cache from sending a 100 (Continue) response before | |
| the inbound server has sent its final reply. | | the inbound server has sent its final reply. | |
| | | | |
| The alternative (known as "write-back" or "copy-back" caching) is not | | The alternative (known as "write-back" or "copy-back" caching) is not | |
| allowed in HTTP/1.1, due to the difficulty of providing consistent | | allowed in HTTP/1.1, due to the difficulty of providing consistent | |
| updates and the problems arising from server, cache, or network | | updates and the problems arising from server, cache, or network | |
| failure prior to write-back. | | failure prior to write-back. | |
| | | | |
| 13.12. Cache Replacement | | 13.12. Cache Replacement | |
| | | | |
|
| If a new cacheable (see sections 14.9.2, 13.2.5, 13.2.6 and 13.8) | | If a new cacheable (see Sections 14.9.2, 13.2.5, 13.2.6 and 13.8) | |
| response is received from a resource while any existing responses for | | response is received from a resource while any existing responses for | |
| the same resource are cached, the cache SHOULD use the new response | | the same resource are cached, the cache SHOULD use the new response | |
| to reply to the current request. It MAY insert it into cache storage | | to reply to the current request. It MAY insert it into cache storage | |
| and MAY, if it meets all other requirements, use it to respond to any | | and MAY, if it meets all other requirements, use it to respond to any | |
| future requests that would previously have caused the old response to | | future requests that would previously have caused the old response to | |
| be returned. If it inserts the new response into cache storage the | | be returned. If it inserts the new response into cache storage the | |
| rules in Section 13.5.3 apply. | | rules in Section 13.5.3 apply. | |
| | | | |
| Note: a new response that has an older Date header value than | | Note: a new response that has an older Date header value than | |
| existing cached responses is not cacheable. | | existing cached responses is not cacheable. | |
| | | | |
| skipping to change at page 116, line 14 | | skipping to change at page 115, line 14 | |
| agent or client. | | agent or client. | |
| | | | |
| Note: Most HTTP/1.0 applications do not recognize or obey qvalues | | Note: Most HTTP/1.0 applications do not recognize or obey qvalues | |
| associated with content-codings. This means that qvalues will not | | associated with content-codings. This means that qvalues will not | |
| work and are not permitted with x-gzip or x-compress. | | work and are not permitted with x-gzip or x-compress. | |
| | | | |
| 14.4. Accept-Language | | 14.4. Accept-Language | |
| | | | |
| The Accept-Language request-header field is similar to Accept, but | | The Accept-Language request-header field is similar to Accept, but | |
| restricts the set of natural languages that are preferred as a | | restricts the set of natural languages that are preferred as a | |
|
| response to the request. Language tags are defined in section | | response to the request. Language tags are defined in Section 3.10. | |
| Section 3.10. | | | |
| | | | |
| Accept-Language = "Accept-Language" ":" | | Accept-Language = "Accept-Language" ":" | |
| 1#( language-range [ ";" "q" "=" qvalue ] ) | | 1#( language-range [ ";" "q" "=" qvalue ] ) | |
| language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) | | language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" ) | |
| | | | |
| Each language-range MAY be given an associated quality value which | | Each language-range MAY be given an associated quality value which | |
| represents an estimate of the user's preference for the languages | | represents an estimate of the user's preference for the languages | |
| specified by that range. The quality value defaults to "q=1". For | | specified by that range. The quality value defaults to "q=1". For | |
| example, | | example, | |
| | | | |
| | | | |
| skipping to change at page 119, line 17 | | skipping to change at page 118, line 12 | |
| A user agent that wishes to authenticate itself with a server-- | | A user agent that wishes to authenticate itself with a server-- | |
| usually, but not necessarily, after receiving a 401 response--does so | | usually, but not necessarily, after receiving a 401 response--does so | |
| by including an Authorization request-header field with the request. | | by including an Authorization request-header field with the request. | |
| The Authorization field value consists of credentials containing the | | The Authorization field value consists of credentials containing the | |
| authentication information of the user agent for the realm of the | | authentication information of the user agent for the realm of the | |
| resource being requested. | | resource being requested. | |
| | | | |
| Authorization = "Authorization" ":" credentials | | Authorization = "Authorization" ":" credentials | |
| | | | |
| HTTP access authentication is described in "HTTP Authentication: | | HTTP access authentication is described in "HTTP Authentication: | |
|
| Basic and Digest Access Authentication" [43]. If a request is | | Basic and Digest Access Authentication" [RFC2617]. If a request is | |
| authenticated and a realm specified, the same credentials SHOULD be | | authenticated and a realm specified, the same credentials SHOULD be | |
| valid for all other requests within this realm (assuming that the | | valid for all other requests within this realm (assuming that the | |
| authentication scheme itself does not require otherwise, such as | | authentication scheme itself does not require otherwise, such as | |
| credentials that vary according to a challenge value or using | | credentials that vary according to a challenge value or using | |
| synchronized clocks). | | synchronized clocks). | |
| | | | |
| When a shared cache (see Section 13.7) receives a request containing | | When a shared cache (see Section 13.7) receives a request containing | |
| an Authorization field, it MUST NOT return the corresponding response | | an Authorization field, it MUST NOT return the corresponding response | |
| as a reply to any other request, unless one of the following specific | | as a reply to any other request, unless one of the following specific | |
| exceptions holds: | | exceptions holds: | |
| | | | |
| skipping to change at page 133, line 20 | | skipping to change at page 132, line 10 | |
| Section 13.6. | | Section 13.6. | |
| | | | |
| If the Content-Location is a relative URI, the relative URI is | | If the Content-Location is a relative URI, the relative URI is | |
| interpreted relative to the Request-URI. | | interpreted relative to the Request-URI. | |
| | | | |
| The meaning of the Content-Location header in PUT or POST requests is | | The meaning of the Content-Location header in PUT or POST requests is | |
| undefined; servers are free to ignore it in those cases. | | undefined; servers are free to ignore it in those cases. | |
| | | | |
| 14.15. Content-MD5 | | 14.15. Content-MD5 | |
| | | | |
|
| The Content-MD5 entity-header field, as defined in RFC 1864 [23], is | | The Content-MD5 entity-header field, as defined in [RFC1864], is an | |
| an MD5 digest of the entity-body for the purpose of providing an end- | | MD5 digest of the entity-body for the purpose of providing an end-to- | |
| to-end message integrity check (MIC) of the entity-body. (Note: a | | end message integrity check (MIC) of the entity-body. (Note: a MIC | |
| MIC is good for detecting accidental modification of the entity-body | | is good for detecting accidental modification of the entity-body in | |
| in transit, but is not proof against malicious attacks.) | | transit, but is not proof against malicious attacks.) | |
| | | | |
| Content-MD5 = "Content-MD5" ":" md5-digest | | Content-MD5 = "Content-MD5" ":" md5-digest | |
|
| md5-digest = <base64 of 128 bit MD5 digest as per RFC 1864> | | md5-digest = <base64 of 128 bit MD5 digest as per [RFC1864]> | |
| | | | |
| The Content-MD5 header field MAY be generated by an origin server or | | The Content-MD5 header field MAY be generated by an origin server or | |
| client to function as an integrity check of the entity-body. Only | | client to function as an integrity check of the entity-body. Only | |
| origin servers or clients MAY generate the Content-MD5 header field; | | origin servers or clients MAY generate the Content-MD5 header field; | |
| proxies and gateways MUST NOT generate it, as this would defeat its | | proxies and gateways MUST NOT generate it, as this would defeat its | |
| value as an end-to-end integrity check. Any recipient of the entity- | | value as an end-to-end integrity check. Any recipient of the entity- | |
| body, including gateways and proxies, MAY check that the digest value | | body, including gateways and proxies, MAY check that the digest value | |
| in this header field matches that of the entity-body as received. | | in this header field matches that of the entity-body as received. | |
| | | | |
| The MD5 digest is computed based on the content of the entity-body, | | The MD5 digest is computed based on the content of the entity-body, | |
| | | | |
| skipping to change at page 137, line 10 | | skipping to change at page 135, line 46 | |
| Content-Type: text/html; charset=ISO-8859-4 | | Content-Type: text/html; charset=ISO-8859-4 | |
| | | | |
| Further discussion of methods for identifying the media type of an | | Further discussion of methods for identifying the media type of an | |
| entity is provided in Section 7.2.1. | | entity is provided in Section 7.2.1. | |
| | | | |
| 14.18. Date | | 14.18. Date | |
| | | | |
| The Date general-header field represents the date and time at which | | The Date general-header field 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 | |
| RFC 822. The field value is an HTTP-date, as described in | | RFC 822. The field value is an HTTP-date, as described in | |
|
| Section 3.3.1; it MUST be sent in RFC 1123 [8]-date format. | | Section 3.3.1; it MUST be sent in [RFC1123]-date format. | |
| | | | |
| Date = "Date" ":" HTTP-date | | Date = "Date" ":" 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: | |
| | | | |
| 1. If the response status code is 100 (Continue) or 101 (Switching | | 1. If the response status code is 100 (Continue) or 101 (Switching | |
| Protocols), the response MAY include a Date header field, at the | | Protocols), the response MAY include a Date header field, at the | |
| server's option. | | server's option. | |
| | | | |
| 2. If the response status code conveys a server error, e.g. 500 | | 2. If the response status code conveys a server error, e.g. 500 | |
| (Internal Server Error) or 503 (Service Unavailable), and it is | | (Internal Server Error) or 503 (Service Unavailable), and it is | |
| inconvenient or impossible to generate a valid Date. | | inconvenient or impossible to generate a valid Date. | |
| | | | |
| skipping to change at page 137, line 39 | | skipping to change at page 136, line 25 | |
| 3. If the server does not have a clock that can provide a reasonable | | 3. If the server does not have a clock that can provide a reasonable | |
| approximation of the current time, its responses MUST NOT include | | approximation of the current time, its responses MUST NOT include | |
| a Date header field. In this case, the rules in Section 14.18.1 | | a Date header field. In this case, the rules in Section 14.18.1 | |
| MUST be followed. | | MUST be followed. | |
| | | | |
| A received message that does not have a Date header field MUST be | | A received message that does not have a Date header field MUST be | |
| assigned one by the recipient if the message will be cached by that | | assigned one by the recipient if the message will be cached by that | |
| recipient or gatewayed via a protocol which requires a Date. An HTTP | | recipient or gatewayed via a protocol which requires a Date. An HTTP | |
| implementation without a clock MUST NOT cache responses without | | implementation without a clock MUST NOT cache responses without | |
| revalidating them on every use. An HTTP cache, especially a shared | | revalidating them on every use. An HTTP cache, especially a shared | |
|
| cache, SHOULD use a mechanism, such as NTP [28], to synchronize its | | cache, SHOULD use a mechanism, such as NTP [RFC1305], to synchronize | |
| clock with a reliable external standard. | | its clock with a reliable external standard. | |
| | | | |
| Clients SHOULD only send a Date header field in messages that include | | Clients SHOULD only send a Date header field in messages that include | |
| an entity-body, as in the case of the PUT and POST requests, and even | | an entity-body, as in the case of the PUT and POST requests, and even | |
| then it is optional. A client without a clock MUST NOT send a Date | | then it is optional. A client without a clock MUST NOT send a Date | |
| header field in a request. | | header field in a request. | |
| | | | |
| The HTTP-date sent in a Date header SHOULD NOT represent a date and | | The HTTP-date sent in a Date header SHOULD NOT represent a date and | |
| time subsequent to the generation of the message. It SHOULD | | time subsequent to the generation of the message. It SHOULD | |
| represent the best available approximation of the date and time of | | represent the best available approximation of the date and time of | |
| message generation, unless the implementation has no means of | | message generation, unless the implementation has no means of | |
| | | | |
| skipping to change at page 138, line 23 | | skipping to change at page 137, line 9 | |
| with the resource by a system or user with a reliable clock. It MAY | | with the resource by a system or user with a reliable clock. It MAY | |
| assign an Expires value that is known, at or before server | | assign an Expires value that is known, at or before server | |
| configuration time, to be in the past (this allows "pre-expiration" | | configuration time, to be in the past (this allows "pre-expiration" | |
| of responses without storing separate Expires values for each | | of responses without storing separate Expires values for each | |
| resource). | | resource). | |
| | | | |
| 14.19. ETag | | 14.19. ETag | |
| | | | |
| The ETag response-header field provides the current value of the | | The ETag response-header field provides the current value of the | |
| entity tag for the requested variant. The headers used with entity | | entity tag for the requested variant. The headers used with entity | |
|
| tags are described in sections 14.24, 14.26 and 14.44. The entity | | tags are described in Sections 14.24, 14.26 and 14.44. The entity | |
| tag MAY be used for comparison with other entities from the same | | tag MAY be used for comparison with other entities from the same | |
| resource (see Section 13.3.3). | | resource (see Section 13.3.3). | |
| | | | |
| ETag = "ETag" ":" entity-tag | | ETag = "ETag" ":" entity-tag | |
| | | | |
| Examples: | | Examples: | |
| | | | |
| ETag: "xyzzy" | | ETag: "xyzzy" | |
| ETag: W/"xyzzy" | | ETag: W/"xyzzy" | |
| ETag: "" | | ETag: "" | |
| | | | |
| skipping to change at page 140, line 25 | | skipping to change at page 139, line 12 | |
| The presence of an Expires header field with a date value of some | | The presence of an Expires header field with a date value of some | |
| time in the future on a response that otherwise would by default be | | time in the future on a response that otherwise would by default be | |
| non-cacheable indicates that the response is cacheable, unless | | non-cacheable indicates that the response is cacheable, unless | |
| indicated otherwise by a Cache-Control header field (Section 14.9). | | indicated otherwise by a Cache-Control header field (Section 14.9). | |
| | | | |
| 14.22. From | | 14.22. From | |
| | | | |
| The From request-header field, if given, SHOULD contain an Internet | | The From request-header field, if given, SHOULD contain an Internet | |
| e-mail address for the human user who controls the requesting user | | e-mail address for the human user who controls the requesting user | |
| agent. The address SHOULD be machine-usable, as defined by "mailbox" | | agent. The address SHOULD be machine-usable, as defined by "mailbox" | |
|
| in RFC 822 [9] as updated by RFC 1123 [8]: | | in [RFC822] as updated by [RFC1123]: | |
| | | | |
| From = "From" ":" mailbox | | From = "From" ":" mailbox | |
| | | | |
| An example is: | | An example is: | |
| | | | |
| From: webmaster@w3.org | | From: webmaster@w3.org | |
| | | | |
| This header field MAY be used for logging purposes and as a means for | | This header field MAY be used for logging purposes and as a means for | |
| identifying the source of invalid or unwanted requests. It SHOULD | | identifying the source of invalid or unwanted requests. It SHOULD | |
| NOT be used as an insecure form of access protection. The | | NOT be used as an insecure form of access protection. The | |
| | | | |
| skipping to change at page 141, line 36 | | skipping to change at page 140, line 22 | |
| A client MUST include a Host header field in all HTTP/1.1 request | | A client MUST include a Host header field in all HTTP/1.1 request | |
| messages . If the requested URI does not include an Internet host | | messages . If the requested URI does not include an Internet host | |
| name for the service being requested, then the Host header field MUST | | name for the service being requested, then the Host header field MUST | |
| be given with an empty value. An HTTP/1.1 proxy MUST ensure that any | | be given with an empty value. An HTTP/1.1 proxy MUST ensure that any | |
| request message it forwards does contain an appropriate Host header | | request message it forwards does contain an appropriate Host header | |
| field that identifies the service being requested by the proxy. All | | field that identifies the service being requested by the proxy. All | |
| Internet-based HTTP/1.1 servers MUST respond with a 400 (Bad Request) | | Internet-based HTTP/1.1 servers MUST respond with a 400 (Bad Request) | |
| status code to any HTTP/1.1 request message which lacks a Host header | | status code to any HTTP/1.1 request message which lacks a Host header | |
| field. | | field. | |
| | | | |
|
| See sections 5.2 and F.1.1 for other requirements relating to Host. | | See Sections 5.2 and F.1.1 for other requirements relating to Host. | |
| | | | |
| 14.24. If-Match | | 14.24. If-Match | |
| | | | |
| The If-Match request-header field is used with a method to make it | | The If-Match request-header field is used with a method to make it | |
| conditional. A client that has one or more entities previously | | conditional. A client that has one or more entities previously | |
| obtained from the resource can verify that one of those entities is | | obtained from the resource can verify that one of those entities is | |
| current by including a list of their associated entity tags in the | | current by including a list of their associated entity tags in the | |
| If-Match header field. Entity tags are defined in Section 3.11. The | | If-Match header field. Entity tags are defined in Section 3.11. The | |
| purpose of this feature is to allow efficient updates of cached | | purpose of this feature is to allow efficient updates of cached | |
| information with a minimum amount of transaction overhead. It is | | information with a minimum amount of transaction overhead. It is | |
| | | | |
| skipping to change at page 149, line 42 | | skipping to change at page 148, line 30 | |
| 14.33. Proxy-Authenticate | | 14.33. Proxy-Authenticate | |
| | | | |
| The Proxy-Authenticate response-header field MUST be included as part | | The Proxy-Authenticate response-header field MUST be included as part | |
| of a 407 (Proxy Authentication Required) response. The field value | | of a 407 (Proxy Authentication Required) response. The field value | |
| consists of a challenge that indicates the authentication scheme and | | consists of a challenge that indicates the authentication scheme and | |
| parameters applicable to the proxy for this Request-URI. | | parameters applicable to the proxy for this Request-URI. | |
| | | | |
| Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge | | Proxy-Authenticate = "Proxy-Authenticate" ":" 1#challenge | |
| | | | |
| The HTTP access authentication process is described in "HTTP | | The HTTP access authentication process is described in "HTTP | |
|
| Authentication: Basic and Digest Access Authentication" [43]. Unlike | | Authentication: Basic and Digest Access Authentication" [RFC2617]. | |
| WWW-Authenticate, the Proxy-Authenticate header field applies only to | | Unlike WWW-Authenticate, the Proxy-Authenticate header field applies | |
| the current connection and SHOULD NOT be passed on to downstream | | only to the current connection and SHOULD NOT be passed on to | |
| clients. However, an intermediate proxy might need to obtain its own | | downstream clients. However, an intermediate proxy might need to | |
| credentials by requesting them from the downstream client, which in | | obtain its own credentials by requesting them from the downstream | |
| some circumstances will appear as if the proxy is forwarding the | | client, which in some circumstances will appear as if the proxy is | |
| Proxy-Authenticate header field. | | forwarding the Proxy-Authenticate header field. | |
| | | | |
| 14.34. Proxy-Authorization | | 14.34. Proxy-Authorization | |
| | | | |
| The Proxy-Authorization request-header field allows the client to | | The Proxy-Authorization request-header field allows the client to | |
| identify itself (or its user) to a proxy which requires | | identify itself (or its user) to a proxy which requires | |
| authentication. The Proxy-Authorization field value consists of | | authentication. The Proxy-Authorization field value consists of | |
| credentials containing the authentication information of the user | | credentials containing the authentication information of the user | |
| agent for the proxy and/or realm of the resource being requested. | | agent for the proxy and/or realm of the resource being requested. | |
| | | | |
| Proxy-Authorization = "Proxy-Authorization" ":" credentials | | Proxy-Authorization = "Proxy-Authorization" ":" credentials | |
| | | | |
| The HTTP access authentication process is described in "HTTP | | The HTTP access authentication process is described in "HTTP | |
|
| Authentication: Basic and Digest Access Authentication" [43]. Unlike | | Authentication: Basic and Digest Access Authentication" [RFC2617]. | |
| Authorization, the Proxy-Authorization header field applies only to | | Unlike Authorization, the Proxy-Authorization header field applies | |
| the next outbound proxy that demanded authentication using the Proxy- | | only to the next outbound proxy that demanded authentication using | |
| Authenticate field. When multiple proxies are used in a chain, the | | the Proxy-Authenticate field. When multiple proxies are used in a | |
| Proxy-Authorization header field is consumed by the first outbound | | chain, the Proxy-Authorization header field is consumed by the first | |
| proxy that was expecting to receive credentials. A proxy MAY relay | | outbound proxy that was expecting to receive credentials. A proxy | |
| the credentials from the client request to the next proxy if that is | | MAY relay the credentials from the client request to the next proxy | |
| the mechanism by which the proxies cooperatively authenticate a given | | if that is the mechanism by which the proxies cooperatively | |
| request. | | authenticate a given request. | |
| | | | |
| 14.35. Range | | 14.35. Range | |
| | | | |
| 14.35.1. Byte Ranges | | 14.35.1. Byte Ranges | |
| | | | |
| Since all HTTP entities are represented in HTTP messages as sequences | | Since all HTTP entities are represented in HTTP messages as sequences | |
| of bytes, the concept of a byte range is meaningful for any HTTP | | of bytes, the concept of a byte range is meaningful for any HTTP | |
| entity. (However, not all clients and servers need to support byte- | | entity. (However, not all clients and servers need to support byte- | |
| range operations.) | | range operations.) | |
| | | | |
| | | | |
| skipping to change at page 159, line 6 | | skipping to change at page 157, line 37 | |
| client), play a role in the selection of the response representation. | | client), play a role in the selection of the response representation. | |
| The "*" value MUST NOT be generated by a proxy server; it may only be | | The "*" value MUST NOT be generated by a proxy server; it may only be | |
| generated by an origin server. | | generated by an origin server. | |
| | | | |
| 14.45. Via | | 14.45. Via | |
| | | | |
| The Via general-header field MUST be used by gateways and proxies to | | The Via general-header field MUST be used by gateways and proxies to | |
| indicate the intermediate protocols and recipients between the user | | indicate the intermediate protocols and recipients between the user | |
| agent and the server on requests, and between the origin server and | | agent and the server on requests, and between the origin server and | |
| the client on responses. It is analogous to the "Received" field of | | the client on responses. It is analogous to the "Received" field of | |
|
| RFC 822 [9] and is intended to be used for tracking message forwards, | | [RFC822] and is intended to be used for tracking message forwards, | |
| avoiding request loops, and identifying the protocol capabilities of | | avoiding request loops, and identifying the protocol capabilities of | |
| all senders along the request/response chain. | | all senders along the request/response chain. | |
| | | | |
| Via = "Via" ":" 1#( received-protocol received-by [ comment ] ) | | Via = "Via" ":" 1#( received-protocol received-by [ comment ] ) | |
| received-protocol = [ protocol-name "/" ] protocol-version | | received-protocol = [ protocol-name "/" ] protocol-version | |
| protocol-name = token | | protocol-name = token | |
| protocol-version = token | | protocol-version = token | |
| received-by = ( host [ ":" port ] ) | pseudonym | | received-by = ( host [ ":" port ] ) | pseudonym | |
| pseudonym = token | | pseudonym = token | |
| | | | |
| | | | |
| skipping to change at page 161, line 12 | | skipping to change at page 159, line 42 | |
| | | | |
| The warn-text SHOULD be in a natural language and character set that | | The warn-text SHOULD be in a natural language and character set that | |
| is most likely to be intelligible to the human user receiving the | | is most likely to be intelligible to the human user receiving the | |
| response. This decision MAY be based on any available knowledge, | | response. This decision MAY be based on any available knowledge, | |
| such as the location of the cache or user, the Accept-Language field | | such as the location of the cache or user, the Accept-Language field | |
| in a request, the Content-Language field in a response, etc. The | | in a request, the Content-Language field in a response, etc. The | |
| default language is English and the default character set is ISO- | | default language is English and the default character set is ISO- | |
| 8859-1. | | 8859-1. | |
| | | | |
| If a character set other than ISO-8859-1 is used, it MUST be encoded | | If a character set other than ISO-8859-1 is used, it MUST be encoded | |
|
| in the warn-text using the method described in RFC 2047 [14]. | | in the warn-text using the method described in [RFC2047]. | |
| | | | |
| Warning headers can in general be applied to any message, however | | Warning headers can in general be applied to any message, however | |
| some specific warn-codes are specific to caches and can only be | | some specific warn-codes are specific to caches and can only be | |
| applied to response messages. New Warning headers SHOULD be added | | applied to response messages. New Warning headers SHOULD be added | |
| after any existing Warning headers. A cache MUST NOT delete any | | after any existing Warning headers. A cache MUST NOT delete any | |
| Warning header that it received with a message. However, if a cache | | Warning header that it received with a message. However, if a cache | |
| successfully validates a cache entry, it SHOULD remove any Warning | | successfully validates a cache entry, it SHOULD remove any Warning | |
| headers previously attached to that entry except as specified for | | headers previously attached to that entry except as specified for | |
| specific Warning codes. It MUST then add any Warning headers | | specific Warning codes. It MUST then add any Warning headers | |
| received in the validating response. In other words, Warning headers | | received in the validating response. In other words, Warning headers | |
| | | | |
| skipping to change at page 163, line 17 | | skipping to change at page 161, line 46 | |
| 14.47. WWW-Authenticate | | 14.47. WWW-Authenticate | |
| | | | |
| The WWW-Authenticate response-header field MUST be included in 401 | | The WWW-Authenticate response-header field MUST be included in 401 | |
| (Unauthorized) response messages. The field value consists of at | | (Unauthorized) response messages. The field value consists of at | |
| least one challenge that indicates the authentication scheme(s) and | | least one challenge that indicates the authentication scheme(s) and | |
| parameters applicable to the Request-URI. | | parameters applicable to the Request-URI. | |
| | | | |
| WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge | | WWW-Authenticate = "WWW-Authenticate" ":" 1#challenge | |
| | | | |
| The HTTP access authentication process is described in "HTTP | | The HTTP access authentication process is described in "HTTP | |
|
| Authentication: Basic and Digest Access Authentication" [43]. User | | Authentication: Basic and Digest Access Authentication" [RFC2617]. | |
| agents are advised to take special care in parsing the WWW- | | User agents are advised to take special care in parsing the WWW- | |
| Authenticate field value as it might contain more than one challenge, | | Authenticate field value as it might contain more than one challenge, | |
| or if more than one WWW-Authenticate header field is provided, the | | or if more than one WWW-Authenticate header field is provided, the | |
| contents of a challenge itself can contain a comma-separated list of | | contents of a challenge itself can contain a comma-separated list of | |
| authentication parameters. | | authentication parameters. | |
| | | | |
| 15. Security Considerations | | 15. 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 | |
| | | | |
| skipping to change at page 167, line 33 | | skipping to change at page 165, line 33 | |
| to be cached, however, only when the TTL (Time To Live) information | | to be cached, however, only when the TTL (Time To Live) information | |
| reported by the name server makes it likely that the cached | | reported by the name server makes it likely that the cached | |
| information will remain useful. | | information will remain useful. | |
| | | | |
| If HTTP clients cache the results of host name lookups in order to | | If HTTP clients cache the results of host name lookups in order to | |
| achieve a performance improvement, they MUST observe the TTL | | achieve a performance improvement, they MUST observe the TTL | |
| information reported by DNS. | | information reported by DNS. | |
| | | | |
| If HTTP clients do not observe this rule, they could be spoofed when | | If HTTP clients do not observe this rule, they could be spoofed when | |
| a previously-accessed server's IP address changes. As network | | a previously-accessed server's IP address changes. As network | |
|
| renumbering is expected to become increasingly common [24], the | | renumbering is expected to become increasingly common [RFC1900], the | |
| possibility of this form of attack will grow. Observing this | | possibility of this form of attack will grow. Observing this | |
| requirement thus reduces this potential security vulnerability. | | requirement thus reduces this potential security vulnerability. | |
| | | | |
| This requirement also improves the load-balancing behavior of clients | | This requirement also improves the load-balancing behavior of clients | |
| for replicated servers using the same DNS name and reduces the | | for replicated servers using the same DNS name and reduces the | |
| likelihood of a user's experiencing failure in accessing sites which | | likelihood of a user's experiencing failure in accessing sites which | |
| use that strategy. | | use that strategy. | |
| | | | |
| 15.4. Location Headers and Spoofing | | 15.4. Location Headers and Spoofing | |
| | | | |
| If a single server supports multiple organizations that do not trust | | If a single server supports multiple organizations that do not trust | |
| one another, then it MUST check the values of Location and Content- | | one another, then it MUST check the values of Location and Content- | |
| Location headers in responses that are generated under control of | | Location headers in responses that are generated under control of | |
| said organizations to make sure that they do not attempt to | | said organizations to make sure that they do not attempt to | |
| invalidate resources over which they have no authority. | | invalidate resources over which they have no authority. | |
| | | | |
| 15.5. Content-Disposition Issues | | 15.5. Content-Disposition Issues | |
| | | | |
|
| RFC 1806 [35], from which the often implemented Content-Disposition | | [RFC1806], from which the often implemented Content-Disposition (see | |
| (see Appendix E.1) header in HTTP is derived, has a number of very | | Appendix E.1) header in HTTP is derived, has a number of very serious | |
| serious security considerations. Content-Disposition is not part of | | security considerations. Content-Disposition is not part of the HTTP | |
| the HTTP standard, but since it is widely implemented, we are | | standard, but since it is widely implemented, we are documenting its | |
| documenting its use and risks for implementors. See RFC 2183 [49] | | use and risks for implementors. See [RFC2183] (which updates RFC | |
| (which updates RFC 1806) for details. | | 1806) for details. | |
| | | | |
| 15.6. Authentication Credentials and Idle Clients | | 15.6. Authentication Credentials and Idle Clients | |
| | | | |
| Existing HTTP clients and user agents typically retain authentication | | Existing HTTP clients and user agents typically retain authentication | |
| information indefinitely. HTTP/1.1. does not provide a method for a | | information indefinitely. HTTP/1.1. does not provide a method for a | |
| server to direct clients to discard these cached credentials. This | | server to direct clients to discard these cached credentials. This | |
| is a significant defect that requires further extensions to HTTP. | | is a significant defect that requires further extensions to HTTP. | |
| Circumstances under which credential caching can interfere with the | | Circumstances under which credential caching can interfere with the | |
| application's security model include but are not limited to: | | application's security model include but are not limited to: | |
| | | | |
| | | | |
| skipping to change at page 170, line 10 | | skipping to change at page 168, line 10 | |
| 15.7.1. Denial of Service Attacks on Proxies | | 15.7.1. 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. | |
| | | | |
| 16. Acknowledgments | | 16. Acknowledgments | |
| | | | |
| 16.1. (RFC2616) | | 16.1. (RFC2616) | |
| | | | |
| This specification makes heavy use of the augmented BNF and generic | | This specification makes heavy use of the augmented BNF and generic | |
|
| constructs defined by David H. Crocker for RFC 822 [9]. Similarly, | | constructs defined by David H. Crocker for [RFC822]. Similarly, it | |
| it reuses many of the definitions provided by Nathaniel Borenstein | | reuses many of the definitions provided by Nathaniel Borenstein and | |
| and Ned Freed for MIME [7]. 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. | |
| | | | |
| The HTTP protocol has evolved considerably over the years. It has | | The HTTP protocol has evolved considerably over the years. It has | |
| benefited from a large and active developer community--the many | | benefited from a large and active developer community--the many | |
| people who have participated on the www-talk mailing list--and it is | | people who have participated on the www-talk mailing list--and it is | |
| that community which has been most responsible for the success of | | that community which has been most responsible for the success of | |
| HTTP and of the World-Wide Web in general. Marc Andreessen, Robert | | HTTP and of the World-Wide Web in general. Marc Andreessen, Robert | |
| Cailliau, Daniel W. Connolly, Bob Denny, John Franks, Jean-Francois | | Cailliau, Daniel W. Connolly, Bob Denny, John Franks, Jean-Francois | |
| Groff, Phillip M. Hallam-Baker, Hakon W. Lie, Ari Luotonen, Rob | | Groff, Phillip M. Hallam-Baker, Hakon W. Lie, Ari Luotonen, Rob | |
| | | | |
| skipping to change at page 171, line 7 | | skipping to change at page 169, line 7 | |
| Much of the content and presentation of the caching design is due to | | Much of the content and presentation of the caching design is due to | |
| suggestions and comments from individuals including: Shel Kaphan, | | suggestions and comments from individuals including: Shel Kaphan, | |
| Paul Leach, Koen Holtman, David Morris, and Larry Masinter. | | Paul Leach, Koen Holtman, David Morris, and Larry Masinter. | |
| | | | |
| Most of the specification of ranges is based on work originally done | | Most of the specification of ranges is based on work originally done | |
| by Ari Luotonen and John Franks, with additional input from Steve | | by Ari Luotonen and John Franks, with additional input from Steve | |
| Zilles. | | Zilles. | |
| | | | |
| Thanks to the "cave men" of Palo Alto. You know who you are. | | Thanks to the "cave men" of Palo Alto. You know who you are. | |
| | | | |
|
| Jim Gettys (the editor of [50]) wishes particularly to thank Roy | | Jim Gettys (the editor of [RFC2616]) wishes particularly to thank Roy | |
| Fielding, the editor of [33], along with John Klensin, Jeff Mogul, | | Fielding, the editor of [RFC2068], along with John Klensin, Jeff | |
| Paul Leach, Dave Kristol, Koen Holtman, John Franks, Josh Cohen, Alex | | Mogul, Paul Leach, Dave Kristol, Koen Holtman, John Franks, Josh | |
| Hopmann, Scott Lawrence, and Larry Masinter for their help. And | | Cohen, Alex Hopmann, Scott Lawrence, and Larry Masinter for their | |
| thanks go particularly to Jeff Mogul and Scott Lawrence for | | help. And thanks go particularly to Jeff Mogul and Scott Lawrence | |
| performing the "MUST/MAY/SHOULD" audit. | | for performing the "MUST/MAY/SHOULD" audit. | |
| | | | |
| The Apache Group, Anselm Baird-Smith, author of Jigsaw, and Henrik | | The Apache Group, Anselm Baird-Smith, author of Jigsaw, and Henrik | |
| Frystyk implemented RFC 2068 early, and we wish to thank them for the | | Frystyk implemented RFC 2068 early, and we wish to thank them for the | |
| discovery of many of the problems that this document attempts to | | discovery of many of the problems that this document attempts to | |
| rectify. | | rectify. | |
| | | | |
| 16.2. (This Document) | | 16.2. (This Document) | |
| | | | |
| This document has benefited greatly from the comments of all those | | This document has benefited greatly from the comments of all those | |
| participating in the HTTP-WG. In particular, we thank Scott Lawrence | | participating in the HTTP-WG. In particular, we thank Scott Lawrence | |
| for maintaining the RFC2616 Errata list, and Roy Fielding, Bjoern | | for maintaining the RFC2616 Errata list, and Roy Fielding, Bjoern | |
| Hoehrmann, Larry Masinter, Howard Melman, Jeff Mogul and Alex | | Hoehrmann, Larry Masinter, Howard Melman, Jeff Mogul and Alex | |
| Rousskov for contributions to it. | | Rousskov for contributions to it. | |
| | | | |
| 17. References | | 17. References | |
| | | | |
| 17.1. References | | 17.1. References | |
| | | | |
|
| [1] Alvestrand, H., "Tags for the Identification of Languages", | | [ISO-8859] | |
| RFC 1766, March 1995. | | International Organization for Standardization, | |
| | | "Information technology - 8-bit single byte coded graphic | |
| [2] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D., Torrey, | | - character sets", 1987-1990. | |
| D., and B. Alberti, "The Internet Gopher Protocol (a | | | |
| distributed document search and retrieval protocol)", RFC 1436, | | | |
| March 1993. | | | |
| | | | |
| [3] Berners-Lee, T., "Universal Resource Identifiers in WWW: A | | | |
| Unifying Syntax for the Expression of Names and Addresses of | | | |
| Objects on the Network as used in the World-Wide Web", | | | |
| RFC 1630, June 1994. | | | |
| | | | |
| [4] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform | | | |
| Resource Locators (URL)", RFC 1738, December 1994. | | | |
| | | | |
| [5] Berners-Lee, T. and D. Connolly, "Hypertext Markup Language - | | | |
| 2.0", RFC 1866, November 1995. | | | |
| | | | |
| [6] Berners-Lee, T., Fielding, R., and H. Nielsen, "Hypertext | | | |
| Transfer Protocol -- HTTP/1.0", RFC 1945, May 1996. | | | |
| | | | |
| [7] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | | | |
| Extensions (MIME) Part One: Format of Internet Message Bodies", | | | |
| RFC 2045, November 1996. | | | |
| | | | |
|
| [8] Braden, R., "Requirements for Internet Hosts - Application and | | Part 1: Latin alphabet No. 1, ISO-8859-1:1987. Part 2: | |
| Support", STD 3, RFC 1123, October 1989. | | Latin alphabet No. 2, ISO-8859-2, 1987. Part 3: Latin | |
| | | alphabet No. 3, ISO-8859-3, 1988. Part 4: Latin alphabet | |
| | | No. 4, ISO-8859-4, 1988. Part 5: Latin/Cyrillic alphabet, | |
| | | ISO-8859-5, 1988. Part 6: Latin/Arabic alphabet, ISO- | |
| | | 8859-6, 1987. Part 7: Latin/Greek alphabet, ISO-8859-7, | |
| | | 1987. Part 8: Latin/Hebrew alphabet, ISO-8859-8, 1988. | |
| | | Part 9: Latin alphabet No. 5, ISO-8859-9, 1990. | |
| | | | |
|
| [9] Crocker, D., "Standard for the format of ARPA Internet text | | [Luo1998] Luotonen, A., "Tunneling TCP based protocols through Web | |
| messages", STD 11, RFC 822, August 1982. | | proxy servers", Work in Progress. | |
| | | | |
|
| [10] Davis, F., Kahle, B., Morris, H., Salem, J., Shen, T., Wang, | | [Nie1997] Nielsen, H., Gettys, J., Prud'hommeaux, E., Lie, H., and | |
| R., Sui, J., and M. Grinbaum, "WAIS Interface Protocol | | C. Lilley, "Network Performance Effects of HTTP/1.1, CSS1, | |
| Prototype Functional Specification (v1.5)", Thinking Machines | | and PNG", Proceedings of ACM SIGCOMM '97, Cannes France , | |
| Corporation , April 1990. | | Sep 1997. | |
| | | | |
|
| [11] Fielding, R., "Relative Uniform Resource Locators", RFC 1808, | | [Pad1995] Padmanabhan, V. and J. Mogul, "Improving HTTP Latency", | |
| June 1995. | | Computer Networks and ISDN Systems v. 28, pp. 25-35, | |
| | | Dec 1995. | |
| | | | |
|
| [12] Horton, M. and R. Adams, "Standard for interchange of USENET | | Slightly revised version of paper in Proc. 2nd | |
| messages", RFC 1036, December 1987. | | International WWW Conference '94: Mosaic and the Web, Oct. | |
| | | 1994, which is available at <http://www.ncsa.uiuc.edu/SDG/ | |
| | | IT94/Proceedings/DDay/mogul/HTTPLatency.html>. | |
| | | | |
|
| [13] Kantor, B. and P. Lapsley, "Network News Transfer Protocol", | | [RFC1036] Horton, M. and R. Adams, "Standard for interchange of | |
| RFC 977, February 1986. | | USENET messages", RFC 1036, December 1987. | |
| | | | |
|
| [14] Moore, K., "MIME (Multipurpose Internet Mail Extensions) Part | | [RFC1123] Braden, R., "Requirements for Internet Hosts - Application | |
| Three: Message Header Extensions for Non-ASCII Text", RFC 2047, | | and Support", STD 3, RFC 1123, October 1989. | |
| November 1996. | | | |
| | | | |
|
| [15] Masinter, L. and E. Nebel, "Form-based File Upload in HTML", | | [RFC1305] Mills, D., "Network Time Protocol (Version 3) | |
| RFC 1867, November 1995. | | Specification, Implementation", RFC 1305, March 1992. | |
| | | | |
|
| [16] Postel, J., "Simple Mail Transfer Protocol", STD 10, RFC 821, | | [RFC1436] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D., | |
| August 1982. | | Torrey, D., and B. Alberti, "The Internet Gopher Protocol | |
| | | (a distributed document search and retrieval protocol)", | |
| | | RFC 1436, March 1993. | |
| | | | |
|
| [17] Postel, J., "Media Type Registration Procedure", RFC 1590, | | [RFC1590] Postel, J., "Media Type Registration Procedure", RFC 1590, | |
| March 1994. | | March 1994. | |
| | | | |
|
| [18] Postel, J. and J. Reynolds, "File Transfer Protocol", STD 9, | | [RFC1630] Berners-Lee, T., "Universal Resource Identifiers in WWW: A | |
| RFC 959, October 1985. | | Unifying Syntax for the Expression of Names and Addresses | |
| | | of Objects on the Network as used in the World-Wide Web", | |
| | | RFC 1630, June 1994. | |
| | | | |
|
| [19] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, | | [RFC1700] Reynolds, J. and J. Postel, "Assigned Numbers", STD 2, | |
| RFC 1700, October 1994. | | RFC 1700, October 1994. | |
| | | | |
|
| [20] Masinter, L. and K. Sollins, "Functional Requirements for | | [RFC1737] Masinter, L. and K. Sollins, "Functional Requirements for | |
| Uniform Resource Names", RFC 1737, December 1994. | | Uniform Resource Names", RFC 1737, December 1994. | |
| | | | |
|
| [21] American National Standards Institute, "Coded Character Set -- | | [RFC1738] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform | |
| 7-bit American Standard Code for Information Interchange", | | Resource Locators (URL)", RFC 1738, December 1994. | |
| ANSI X3.4, 1986. | | | |
| | | | |
|
| [22] International Organization for Standardization, "Information | | [RFC1766] Alvestrand, H., "Tags for the Identification of | |
| technology - 8-bit single byte coded graphic - character sets", | | Languages", RFC 1766, March 1995. | |
| 1987-1990. | | | |
| | | | |
|
| Part 1: Latin alphabet No. 1, ISO-8859-1:1987. Part 2: Latin | | [RFC1806] Troost, R. and S. Dorner, "Communicating Presentation | |
| alphabet No. 2, ISO-8859-2, 1987. Part 3: Latin alphabet No. | | Information in Internet Messages: The Content-Disposition | |
| 3, ISO-8859-3, 1988. Part 4: Latin alphabet No. 4, ISO-8859-4, | | Header", RFC 1806, June 1995. | |
| 1988. Part 5: Latin/Cyrillic alphabet, ISO-8859-5, 1988. Part | | | |
| 6: Latin/Arabic alphabet, ISO-8859-6, 1987. Part 7: Latin/ | | | |
| Greek alphabet, ISO-8859-7, 1987. Part 8: Latin/Hebrew | | | |
| alphabet, ISO-8859-8, 1988. Part 9: Latin alphabet No. 5, ISO- | | | |
| 8859-9, 1990. | | | |
| | | | |
|
| [23] Myers, J. and M. Rose, "The Content-MD5 Header Field", | | [RFC1808] Fielding, R., "Relative Uniform Resource Locators", | |
| | | RFC 1808, June 1995. | |
| | | | |
| | | [RFC1864] Myers, J. and M. Rose, "The Content-MD5 Header Field", | |
| RFC 1864, October 1995. | | RFC 1864, October 1995. | |
| | | | |
|
| [24] Carpenter, B. and Y. Rekhter, "Renumbering Needs Work", | | [RFC1866] Berners-Lee, T. and D. Connolly, "Hypertext Markup | |
| RFC 1900, February 1996. | | Language - 2.0", RFC 1866, November 1995. | |
| | | | |
|
| [25] Deutsch, P., Gailly, J-L., Adler, M., Deutsch, L., and G. | | [RFC1867] Masinter, L. and E. Nebel, "Form-based File Upload in | |
| | | HTML", RFC 1867, November 1995. | |
| | | | |
|
| Randers-Pehrson, "GZIP file format specification version 4.3", | | [RFC1900] Carpenter, B. and Y. Rekhter, "Renumbering Needs Work", | |
| RFC 1952, May 1996. | | RFC 1900, February 1996. | |
| | | | |
|
| [26] Padmanabhan, V. and J. Mogul, "Improving HTTP Latency", | | [RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, "Hypertext | |
| Computer Networks and ISDN Systems v. 28, pp. 25-35, Dec 1995. | | Transfer Protocol -- HTTP/1.0", RFC 1945, May 1996. | |
| | | | |
|
| Slightly revised version of paper in Proc. 2nd International | | [RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data Format | |
| WWW Conference '94: Mosaic and the Web, Oct. 1994, which is | | Specification version 3.3", RFC 1950, May 1996. | |
| available at <http://www.ncsa.uiuc.edu/SDG/IT94/Proceedings/ | | | |
| DDay/mogul/HTTPLatency.html>. | | | |
| | | | |
|
| [27] Touch, J., Heidemann, J., and K. Obraczka, "Analysis of HTTP | | [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification | |
| Performance", ISI Research Report ISI/RR-98-463 (original | | version 1.3", RFC 1951, May 1996. | |
| report dated Aug.1996), Aug 1998, | | | |
| <http://www.isi.edu/touch/pubs/http-perf96/>. | | | |
| | | | |
|
| [28] Mills, D., "Network Time Protocol (Version 3) Specification, | | [RFC1952] Deutsch, P., Gailly, J-L., Adler, M., Deutsch, L., and G. | |
| Implementation", RFC 1305, March 1992. | | Randers-Pehrson, "GZIP file format specification version | |
| | | 4.3", RFC 1952, May 1996. | |
| | | | |
|
| [29] Deutsch, P., "DEFLATE Compressed Data Format Specification | | [RFC2026] Bradner, S., "The Internet Standards Process -- Revision | |
| version 1.3", RFC 1951, May 1996. | | 3", BCP 9, RFC 2026, October 1996. | |
| | | | |
|
| [30] Spero, S., "Analysis of HTTP Performance Problems", | | [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |
| <http://sunsite.unc.edu/mdma-release/http-prob.html>. | | Extensions (MIME) Part One: Format of Internet Message | |
| | | Bodies", RFC 2045, November 1996. | |
| | | | |
|
| [31] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data Format | | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |
| Specification version 3.3", RFC 1950, May 1996. | | Extensions (MIME) Part Two: Media Types", RFC 2046, | |
| | | November 1996. | |
| | | | |
|
| [32] Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P., | | [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail Extensions) | |
| Luotonen, A., Sink, E., and L. Stewart, "An Extension to HTTP : | | Part Three: Message Header Extensions for Non-ASCII Text", | |
| Digest Access Authentication", RFC 2069, January 1997. | | RFC 2047, November 1996. | |
| | | | |
|
| [33] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., and T. | | [RFC2049] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |
| | | Extensions (MIME) Part Five: Conformance Criteria and | |
| | | Examples", RFC 2049, November 1996. | |
| | | | |
| | | [RFC2068] Fielding, R., Gettys, J., Mogul, J., Nielsen, H., and T. | |
| Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", | | Berners-Lee, "Hypertext Transfer Protocol -- HTTP/1.1", | |
| RFC 2068, January 1997. | | RFC 2068, January 1997. | |
| | | | |
|
| [34] Bradner, S., "Key words for use in RFCs to Indicate Requirement | | [RFC2069] Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P., | |
| Levels", BCP 14, RFC 2119, March 1997. | | Luotonen, A., Sink, E., and L. Stewart, "An Extension to | |
| | | HTTP : Digest Access Authentication", RFC 2069, | |
| | | January 1997. | |
| | | | |
|
| [35] Troost, R. and S. Dorner, "Communicating Presentation | | [RFC2076] Palme, J., "Common Internet Message Headers", RFC 2076, | |
| Information in Internet Messages: The Content-Disposition | | February 1997. | |
| Header", RFC 1806, June 1995. | | | |
| | | | |
|
| [36] Mogul, J., Fielding, R., Gettys, J., and H. Nielsen, "Use and | | [RFC2110] Palme, J. and A. Hopmann, "MIME E-mail Encapsulation of | |
| Interpretation of HTTP Version Numbers", RFC 2145, May 1997. | | Aggregate Documents, such as HTML (MHTML)", RFC 2110, | |
| | | March 1997. | |
| | | | |
|
| [37] Palme, J., "Common Internet Message Headers", RFC 2076, | | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |
| February 1997. | | Requirement Levels", BCP 14, RFC 2119, March 1997. | |
| | | | |
|
| [38] Yergeau, F., "UTF-8, a transformation format of ISO 10646", | | [RFC2145] Mogul, J., Fielding, R., Gettys, J., and H. Nielsen, "Use | |
| RFC 2279, January 1998. | | and Interpretation of HTTP Version Numbers", RFC 2145, | |
| | | May 1997. | |
| | | | |
|
| [39] Nielsen, H., Gettys, J., Prud'hommeaux, E., Lie, H., and C. | | [RFC2183] Troost, R., Dorner, S., and K. Moore, "Communicating | |
| Lilley, "Network Performance Effects of HTTP/1.1, CSS1, and | | Presentation Information in Internet Messages: The | |
| PNG", Proceedings of ACM SIGCOMM '97, Cannes France , Sep 1997. | | Content-Disposition Header Field", RFC 2183, August 1997. | |
| | | | |
|
| [40] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | | [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and | |
| Extensions (MIME) Part Two: Media Types", RFC 2046, | | Languages", BCP 18, RFC 2277, January 1998. | |
| November 1996. | | | |
| | | | |
|
| [41] Alvestrand, H., "IETF Policy on Character Sets and Languages", | | [RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO | |
| BCP 18, RFC 2277, January 1998. | | 10646", RFC 2279, January 1998. | |
| | | | |
|
| [42] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | | [RFC2324] Masinter, L., "Hyper Text Coffee Pot Control Protocol | |
| | | (HTCPCP/1.0)", RFC 2324, April 1998. | |
| | | | |
| | | [RFC2396] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |
| Resource Identifiers (URI): Generic Syntax", RFC 2396, | | Resource Identifiers (URI): Generic Syntax", RFC 2396, | |
| August 1998. | | August 1998. | |
| | | | |
|
| [43] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | | [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., | |
| Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication: | | Leach, P., Luotonen, A., and L. Stewart, "HTTP | |
| Basic and Digest Access Authentication", RFC 2617, June 1999. | | Authentication: Basic and Digest Access Authentication", | |
| | | RFC 2617, June 1999. | |
| | | | |
|
| [44] Luotonen, A., "Tunneling TCP based protocols through Web proxy | | [RFC821] Postel, J., "Simple Mail Transfer Protocol", STD 10, | |
| servers", Work in Progress. | | RFC 821, August 1982. | |
| | | | |
|
| [45] Palme, J. and A. Hopmann, "MIME E-mail Encapsulation of | | [RFC822] Crocker, D., "Standard for the format of ARPA Internet | |
| Aggregate Documents, such as HTML (MHTML)", RFC 2110, | | text messages", STD 11, RFC 822, August 1982. | |
| March 1997. | | | |
| | | | |
|
| [46] Bradner, S., "The Internet Standards Process -- Revision 3", | | [RFC959] Postel, J. and J. Reynolds, "File Transfer Protocol", | |
| BCP 9, RFC 2026, October 1996. | | STD 9, RFC 959, October 1985. | |
| | | | |
|
| [47] Masinter, L., "Hyper Text Coffee Pot Control Protocol | | [RFC977] Kantor, B. and P. Lapsley, "Network News Transfer | |
| (HTCPCP/1.0)", RFC 2324, April 1998. | | Protocol", RFC 977, February 1986. | |
| | | | |
|
| [48] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | | [Spero] Spero, S., "Analysis of HTTP Performance Problems", | |
| Extensions (MIME) Part Five: Conformance Criteria and | | <http://sunsite.unc.edu/mdma-release/http-prob.html>. | |
| Examples", RFC 2049, November 1996. | | | |
| | | | |
|
| [49] Troost, R., Dorner, S., and K. Moore, "Communicating | | [Tou1998] Touch, J., Heidemann, J., and K. Obraczka, "Analysis of | |
| Presentation Information in Internet Messages: The Content- | | HTTP Performance", ISI Research Report ISI/RR-98-463 | |
| Disposition Header Field", RFC 2183, August 1997. | | (original report dated Aug.1996), Aug 1998, | |
| | | <http://www.isi.edu/touch/pubs/http-perf96/>. | |
| | | | |
| | | [USASCII] American National Standards Institute, "Coded Character | |
| | | Set -- 7-bit American Standard Code for Information | |
| | | Interchange", ANSI X3.4, 1986. | |
| | | | |
| | | [WAIS] Davis, F., Kahle, B., Morris, H., Salem, J., Shen, T., | |
| | | Wang, R., Sui, J., and M. Grinbaum, "WAIS Interface | |
| | | Protocol Prototype Functional Specification (v1.5)", | |
| | | Thinking Machines Corporation , April 1990. | |
| | | | |
| 17.2. Informative References | | 17.2. Informative References | |
| | | | |
|
| [50] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., | | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |
| Leach, P., and T. Berners-Lee, "Hypertext Transfer Protocol -- | | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |
| HTTP/1.1", RFC 2616, June 1999. | | Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. | |
| | | | |
| URIs | | URIs | |
| | | | |
|
| [51] <mailto:ietf-http-wg@w3.org> | | [1] <mailto:ietf-http-wg@w3.org> | |
| | | | |
|
| [52] <mailto:ietf-http-wg-request@w3.org?subject=subscribe> | | [2] <mailto:ietf-http-wg-request@w3.org?subject=subscribe> | |
| | | | |
| Appendix A. Internet Media Type message/http and application/http | | Appendix A. Internet Media Type message/http and application/http | |
| | | | |
| In addition to defining the HTTP/1.1 protocol, this document serves | | In addition to defining the HTTP/1.1 protocol, this document serves | |
| as the specification for the Internet media type "message/http" and | | as the specification for the Internet media type "message/http" and | |
| "application/http". The message/http type can be used to enclose a | | "application/http". The message/http type can be used to enclose a | |
| single HTTP request or response message, provided that it obeys the | | single HTTP request or response message, provided that it obeys the | |
| MIME restrictions for all "message" types regarding line length and | | MIME restrictions for all "message" types regarding line length and | |
| encodings. The application/http type can be used to enclose a | | encodings. The application/http type can be used to enclose a | |
| pipeline of one or more HTTP request or response messages (not | | pipeline of one or more HTTP request or response messages (not | |
|
| intermixed). The following is to be registered with IANA [17]. | | intermixed). The following is to be registered with IANA [RFC1590]. | |
| | | | |
| Media Type name: message | | Media Type name: message | |
| | | | |
| Media subtype name: http | | Media subtype name: http | |
| | | | |
| Required parameters: none | | Required parameters: none | |
| | | | |
| Optional parameters: version, msgtype | | Optional parameters: version, msgtype | |
| | | | |
| version: The HTTP-Version number of the enclosed message (e.g., | | version: The HTTP-Version number of the enclosed message (e.g., | |
| | | | |
| skipping to change at page 180, line 8 | | skipping to change at page 179, line 8 | |
| Content-range: bytes 7000-7999/8000 | | Content-range: bytes 7000-7999/8000 | |
| | | | |
| ...the second range | | ...the second range | |
| --THIS_STRING_SEPARATES-- | | --THIS_STRING_SEPARATES-- | |
| | | | |
| Notes: | | Notes: | |
| | | | |
| 1. Additional CRLFs may precede the first boundary string in the | | 1. Additional CRLFs may precede the first boundary string in the | |
| entity. | | entity. | |
| | | | |