draft-ietf-httpbis-p1-messaging-11.txt   draft-ietf-httpbis-p1-messaging-12.txt 
HTTPbis Working Group R. Fielding, Ed. HTTPbis Working Group R. Fielding, Ed.
Internet-Draft Day Software Internet-Draft Day Software
Obsoletes: 2616 (if approved) J. Gettys Obsoletes: 2616 (if approved) J. Gettys
Updates: 2817 (if approved) Alcatel-Lucent Updates: 2817 (if approved) Alcatel-Lucent
Intended status: Standards Track J. Mogul Intended status: Standards Track J. Mogul
Expires: February 5, 2011 HP Expires: April 28, 2011 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
August 4, 2010 October 25, 2010
HTTP/1.1, part 1: URIs, Connections, and Message Parsing HTTP/1.1, part 1: URIs, Connections, and Message Parsing
draft-ietf-httpbis-p1-messaging-11 draft-ietf-httpbis-p1-messaging-12
Abstract Abstract
The Hypertext Transfer Protocol (HTTP) is an application-level The Hypertext Transfer Protocol (HTTP) is an application-level
protocol for distributed, collaborative, hypertext information protocol for distributed, collaborative, hypertext information
systems. HTTP has been in use by the World Wide Web global systems. HTTP has been in use by the World Wide Web global
information initiative since 1990. This document is Part 1 of the information initiative since 1990. This document is Part 1 of the
seven-part specification that defines the protocol referred to as seven-part specification that defines the protocol referred to as
"HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 1 provides "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 1 provides
an overview of HTTP and its associated terminology, defines the an overview of HTTP and its associated terminology, defines the
skipping to change at page 1, line 47 skipping to change at page 1, line 47
frames, and describes general security concerns for implementations. frames, and describes general security concerns for implementations.
Editorial Note (To be removed by RFC Editor) Editorial Note (To be removed by RFC Editor)
Discussion of this draft should take place on the HTTPBIS working Discussion of this draft should take place on the HTTPBIS working
group mailing list (ietf-http-wg@w3.org). The current issues list is group mailing list (ietf-http-wg@w3.org). The current issues list is
at <http://tools.ietf.org/wg/httpbis/trac/report/3> and related at <http://tools.ietf.org/wg/httpbis/trac/report/3> and related
documents (including fancy diffs) can be found at documents (including fancy diffs) can be found at
<http://tools.ietf.org/wg/httpbis/>. <http://tools.ietf.org/wg/httpbis/>.
The changes in this draft are summarized in Appendix D.12. The changes in this draft are summarized in Appendix D.13.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on February 5, 2011. This Internet-Draft will expire on April 28, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2010 IETF Trust and the persons identified as the Copyright (c) 2010 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 3, line 40 skipping to change at page 3, line 40
5.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 31 5.1.1. Status Code and Reason Phrase . . . . . . . . . . . . 31
6. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 32 6. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 32
6.1. Date/Time Formats: Full Date . . . . . . . . . . . . . . . 32 6.1. Date/Time Formats: Full Date . . . . . . . . . . . . . . . 32
6.2. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 34 6.2. Transfer Codings . . . . . . . . . . . . . . . . . . . . . 34
6.2.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 35 6.2.1. Chunked Transfer Coding . . . . . . . . . . . . . . . 35
6.2.2. Compression Codings . . . . . . . . . . . . . . . . . 37 6.2.2. Compression Codings . . . . . . . . . . . . . . . . . 37
6.2.3. Transfer Coding Registry . . . . . . . . . . . . . . . 38 6.2.3. Transfer Coding Registry . . . . . . . . . . . . . . . 38
6.3. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 39 6.3. Product Tokens . . . . . . . . . . . . . . . . . . . . . . 39
6.4. Quality Values . . . . . . . . . . . . . . . . . . . . . . 39 6.4. Quality Values . . . . . . . . . . . . . . . . . . . . . . 39
7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 39 7. Connections . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 39 7.1. Persistent Connections . . . . . . . . . . . . . . . . . . 40
7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 40 7.1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . 40
7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 40 7.1.2. Overall Operation . . . . . . . . . . . . . . . . . . 40
7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 42 7.1.3. Proxy Servers . . . . . . . . . . . . . . . . . . . . 42
7.1.4. Practical Considerations . . . . . . . . . . . . . . . 44 7.1.4. Practical Considerations . . . . . . . . . . . . . . . 44
7.2. Message Transmission Requirements . . . . . . . . . . . . 45 7.2. Message Transmission Requirements . . . . . . . . . . . . 45
7.2.1. Persistent Connections and Flow Control . . . . . . . 45 7.2.1. Persistent Connections and Flow Control . . . . . . . 45
7.2.2. Monitoring Connections for Error Status Messages . . . 45 7.2.2. Monitoring Connections for Error Status Messages . . . 45
7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 46 7.2.3. Use of the 100 (Continue) Status . . . . . . . . . . . 46
7.2.4. Client Behavior if Server Prematurely Closes 7.2.4. Client Behavior if Server Prematurely Closes
Connection . . . . . . . . . . . . . . . . . . . . . . 48 Connection . . . . . . . . . . . . . . . . . . . . . . 48
skipping to change at page 4, line 50 skipping to change at page 4, line 50
Appendix A. Tolerant Applications . . . . . . . . . . . . . . . . 70 Appendix A. Tolerant Applications . . . . . . . . . . . . . . . . 70
Appendix B. Compatibility with Previous Versions . . . . . . . . 71 Appendix B. Compatibility with Previous Versions . . . . . . . . 71
B.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 71 B.1. Changes from HTTP/1.0 . . . . . . . . . . . . . . . . . . 71
B.1.1. Changes to Simplify Multi-homed Web Servers and B.1.1. Changes to Simplify Multi-homed Web Servers and
Conserve IP Addresses . . . . . . . . . . . . . . . . 72 Conserve IP Addresses . . . . . . . . . . . . . . . . 72
B.2. Compatibility with HTTP/1.0 Persistent Connections . . . . 72 B.2. Compatibility with HTTP/1.0 Persistent Connections . . . . 72
B.3. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 73 B.3. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 73
Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 74 Appendix C. Collected ABNF . . . . . . . . . . . . . . . . . . . 74
Appendix D. Change Log (to be removed by RFC Editor before Appendix D. Change Log (to be removed by RFC Editor before
publication) . . . . . . . . . . . . . . . . . . . . 78 publication) . . . . . . . . . . . . . . . . . . . . 78
D.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 78 D.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 78
D.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 78 D.2. Since draft-ietf-httpbis-p1-messaging-00 . . . . . . . . . 78
D.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 80 D.3. Since draft-ietf-httpbis-p1-messaging-01 . . . . . . . . . 80
D.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 81 D.4. Since draft-ietf-httpbis-p1-messaging-02 . . . . . . . . . 81
D.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 81 D.5. Since draft-ietf-httpbis-p1-messaging-03 . . . . . . . . . 81
D.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 82 D.6. Since draft-ietf-httpbis-p1-messaging-04 . . . . . . . . . 82
D.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 82 D.7. Since draft-ietf-httpbis-p1-messaging-05 . . . . . . . . . 82
D.8. Since draft-ietf-httpbis-p1-messaging-06 . . . . . . . . . 83 D.8. Since draft-ietf-httpbis-p1-messaging-06 . . . . . . . . . 83
D.9. Since draft-ietf-httpbis-p1-messaging-07 . . . . . . . . . 84 D.9. Since draft-ietf-httpbis-p1-messaging-07 . . . . . . . . . 84
D.10. Since draft-ietf-httpbis-p1-messaging-08 . . . . . . . . . 84 D.10. Since draft-ietf-httpbis-p1-messaging-08 . . . . . . . . . 84
D.11. Since draft-ietf-httpbis-p1-messaging-09 . . . . . . . . . 85 D.11. Since draft-ietf-httpbis-p1-messaging-09 . . . . . . . . . 85
D.12. Since draft-ietf-httpbis-p1-messaging-10 . . . . . . . . . 85 D.12. Since draft-ietf-httpbis-p1-messaging-10 . . . . . . . . . 85
D.13. Since draft-ietf-httpbis-p1-messaging-11 . . . . . . . . . 86
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
1. Introduction 1. Introduction
The Hypertext Transfer Protocol (HTTP) is an application-level The Hypertext Transfer Protocol (HTTP) is an application-level
request/response protocol that uses extensible semantics and MIME- request/response protocol that uses extensible semantics and MIME-
like message payloads for flexible interaction with network-based like message payloads for flexible interaction with network-based
hypertext information systems. HTTP relies upon the Uniform Resource hypertext information systems. HTTP relies upon the Uniform Resource
Identifier (URI) standard [RFC3986] to indicate request targets and Identifier (URI) standard [RFC3986] to indicate request targets and
relationships between resources. Messages are passed in a format relationships between resources. Messages are passed in a format
skipping to change at page 21, line 39 skipping to change at page 21, line 39
message unless the entire field value for that header field is message unless the entire field value for that header field is
defined as a comma-separated list [i.e., #(values)]. Multiple header defined as a comma-separated list [i.e., #(values)]. Multiple header
fields with the same field name can be combined into one "field-name: fields with the same field name can be combined into one "field-name:
field-value" pair, without changing the semantics of the message, by field-value" pair, without changing the semantics of the message, by
appending each subsequent field value to the combined field value in appending each subsequent field value to the combined field value in
order, separated by a comma. The order in which header fields with order, separated by a comma. The order in which header fields with
the same field name are received is therefore significant to the the same field name are received is therefore significant to the
interpretation of the combined field value; a proxy MUST NOT change interpretation of the combined field value; a proxy MUST NOT change
the order of these field values when forwarding a message. the order of these field values when forwarding a message.
Note: The "Set-Cookie" header as implemented in practice (as Note: The "Set-Cookie" header field as implemented in practice (as
opposed to how it is specified in [RFC2109]) can occur multiple opposed to how it is specified in [RFC2109]) can occur multiple
times, but does not use the list syntax, and thus cannot be times, but does not use the list syntax, and thus cannot be
combined into a single line. (See Appendix A.2.3 of [Kri2001] for combined into a single line. (See Appendix A.2.3 of [Kri2001] for
details.) Also note that the Set-Cookie2 header specified in details.) Also note that the Set-Cookie2 header field specified
[RFC2965] does not share this problem. in [RFC2965] does not share this problem.
Historically, HTTP header field values could be extended over Historically, HTTP header field values could be extended over
multiple lines by preceding each extra line with at least one space multiple lines by preceding each extra line with at least one space
or horizontal tab character (line folding). This specification or horizontal tab character (line folding). This specification
deprecates such line folding except within the message/http media deprecates such line folding except within the message/http media
type (Section 10.3.1). HTTP/1.1 senders MUST NOT produce messages type (Section 10.3.1). HTTP/1.1 senders MUST NOT produce messages
that include line folding (i.e., that contain any field-content that that include line folding (i.e., that contain any field-content that
matches the obs-fold rule) unless the message is intended for matches the obs-fold rule) unless the message is intended for
packaging within the message/http media type. HTTP/1.1 recipients packaging within the message/http media type. HTTP/1.1 recipients
SHOULD accept line folding and replace any embedded obs-fold SHOULD accept line folding and replace any embedded obs-fold
skipping to change at page 24, line 16 skipping to change at page 24, line 16
3. If a message is received without Transfer-Encoding and with 3. If a message is received without Transfer-Encoding and with
either multiple Content-Length header fields or a single Content- either multiple Content-Length header fields or a single Content-
Length header field with an invalid value, then the message Length header field with an invalid value, then the message
framing is invalid and MUST be treated as an error to prevent framing is invalid and MUST be treated as an error to prevent
request or response smuggling. If this is a request message, the request or response smuggling. If this is a request message, the
server MUST respond with a 400 (Bad Request) status code and then server MUST respond with a 400 (Bad Request) status code and then
close the connection. If this is a response message received by close the connection. If this is a response message received by
a proxy or gateway, the proxy or gateway MUST discard the a proxy or gateway, the proxy or gateway MUST discard the
received response, send a 502 (Bad Gateway) status code as its received response, send a 502 (Bad Gateway) status code as its
downstream response, and then close the connection. If this is a downstream response, and then close the connection. If this is a
response message received by a user-agent, the message-body response message received by a user-agent, it SHOULD be treated
length is determined by reading the connection until it is as an error by discarding the message and closing the connection.
closed; an error SHOULD be indicated to the user.
4. If a valid Content-Length header field (Section 9.2) is present 4. If a valid Content-Length header field (Section 9.2) is present
without Transfer-Encoding, its decimal value defines the message- without Transfer-Encoding, its decimal value defines the message-
body length in octets. If the actual number of octets sent in body length in octets. If the actual number of octets sent in
the message is less than the indicated Content-Length, the the message is less than the indicated Content-Length, the
recipient MUST consider the message to be incomplete and treat recipient MUST consider the message to be incomplete and treat
the connection as no longer usable. If the actual number of the connection as no longer usable. If the actual number of
octets sent in the message is more than the indicated Content- octets sent in the message is more than the indicated Content-
Length, the recipient MUST only process the message-body up to Length, the recipient MUST only process the message-body up to
the field value's number of octets; the remainder of the message the field value's number of octets; the remainder of the message
skipping to change at page 27, line 18 skipping to change at page 27, line 18
request. request.
request-target = "*" request-target = "*"
/ absolute-URI / absolute-URI
/ ( path-absolute [ "?" query ] ) / ( path-absolute [ "?" query ] )
/ authority / authority
The four options for request-target are dependent on the nature of The four options for request-target are dependent on the nature of
the request. the request.
The asterisk "*" means that the request does not apply to a The asterisk "*" ("asterisk form") means that the request does not
particular resource, but to the server itself, and is only allowed apply to a particular resource, but to the server itself, and is only
when the method used does not necessarily apply to a resource. One allowed when the method used does not necessarily apply to a
example would be resource. One example would be
OPTIONS * HTTP/1.1 OPTIONS * HTTP/1.1
The absolute-URI form is REQUIRED when the request is being made to a The absolute-URI form is REQUIRED when the request is being made to a
proxy. The proxy is requested to forward the request or service it proxy. The proxy is requested to forward the request or service it
from a valid cache, and return the response. Note that the proxy MAY from a valid cache, and return the response. Note that the proxy MAY
forward the request on to another proxy or directly to the server forward the request on to another proxy or directly to the server
specified by the absolute-URI. In order to avoid request loops, a specified by the absolute-URI. In order to avoid request loops, a
proxy MUST be able to recognize all of its server names, including proxy MUST be able to recognize all of its server names, including
any aliases, local variations, and the numeric IP address. An any aliases, local variations, and the numeric IP address. An
skipping to change at page 27, line 45 skipping to change at page 27, line 45
To allow for transition to absolute-URIs in all requests in future To allow for transition to absolute-URIs in all requests in future
versions of HTTP, all HTTP/1.1 servers MUST accept the absolute-URI versions of HTTP, all HTTP/1.1 servers MUST accept the absolute-URI
form in requests, even though HTTP/1.1 clients will only generate form in requests, even though HTTP/1.1 clients will only generate
them in requests to proxies. them in requests to proxies.
The authority form is only used by the CONNECT method (Section 7.9 of The authority form is only used by the CONNECT method (Section 7.9 of
[Part2]). [Part2]).
The most common form of request-target is that used to identify a The most common form of request-target is that used to identify a
resource on an origin server or gateway. In this case the absolute resource on an origin server or gateway ("path-absolute form"). In
path of the URI MUST be transmitted (see Section 2.6.1, path- this case the absolute path of the URI MUST be transmitted (see
absolute) as the request-target, and the network location of the URI Section 2.6.1, path-absolute) as the request-target, and the network
(authority) MUST be transmitted in a Host header field. For example, location of the URI (authority) MUST be transmitted in a Host header
a client wishing to retrieve the resource above directly from the field. For example, a client wishing to retrieve the resource above
origin server would create a TCP connection to port 80 of the host directly from the origin server would create a TCP connection to port
"www.example.org" and send the lines: 80 of the host "www.example.org" and send the lines:
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).
If a proxy receives a request without any path in the request-target If a proxy receives a request without any path in the request-target
and the method specified is capable of supporting the asterisk form and the method specified is capable of supporting the asterisk form
skipping to change at page 30, line 6 skipping to change at page 30, line 6
HTTP requests often do not carry the absolute URI ([RFC3986], Section HTTP requests often do not carry the absolute URI ([RFC3986], Section
4.3) for the target resource; instead, the URI needs to be inferred 4.3) for the target resource; instead, the URI needs to be inferred
from the request-target, Host header field, and connection context. from the request-target, Host header field, and connection context.
The result of this process is called the "effective request URI". The result of this process is called the "effective request URI".
The "target resource" is the resource identified by the effective The "target resource" is the resource identified by the effective
request URI. request URI.
If the request-target is an absolute-URI, then the effective request If the request-target is an absolute-URI, then the effective request
URI is the request-target. URI is the request-target.
If the request-target uses the path-absolute (plus optional query) If the request-target uses the path-absolute form or the asterisk
syntax or if it is just the asterisk "*", then the effective request form, and the Host header field is present, then the effective
URI is constructed by concatenating request URI is constructed by concatenating
o the scheme name: "http" if the request was received over an o the scheme name: "http" if the request was received over an
insecure TCP connection, or "https" when received over a SSL/ insecure TCP connection, or "https" when received over a SSL/
TLS-secured TCP connection, TLS-secured TCP connection,
o the character sequence "://", o the character sequence "://",
o the authority component, as specified in the Host header o the authority component, as specified in the Host header field
(Section 9.4) and determined by the rules in Section 4.2, (Section 9.4), and
[[effrequri-nohost: Do we need to include the handling of missing
hosts in HTTP/1.0 messages, as described in Section 4.2? -- See
<http://tools.ietf.org/wg/httpbis/trac/ticket/221> --jre]] and
o the request-target obtained from the Request-Line, unless the o the request-target obtained from the Request-Line, unless the
request-target is just the asterisk "*". request-target is just the asterisk "*".
If the request-target uses the path-absolute form or the asterisk
form, and the Host header field is not present, then the effective
request URI is undefined.
Otherwise, when request-target uses the authority form, the effective Otherwise, when request-target uses the authority form, the effective
Request URI is undefined. request URI is undefined.
Example 1: the effective request URI for the message Example 1: the effective request URI for the message
GET /pub/WWW/TheProject.html HTTP/1.1 GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.example.org:8080 Host: www.example.org:8080
(received over an insecure TCP connection) is "http", plus "://", (received over an insecure TCP connection) is "http", plus "://",
plus the authority component "www.example.org:8080", plus the plus the authority component "www.example.org:8080", plus the
request-target "/pub/WWW/TheProject.html", thus request-target "/pub/WWW/TheProject.html", thus
"http://www.example.org:8080/pub/WWW/TheProject.html". "http://www.example.org:8080/pub/WWW/TheProject.html".
skipping to change at page 33, line 6 skipping to change at page 33, line 6
abbreviation for time zone, and MUST be assumed when reading the abbreviation for time zone, and MUST be assumed when reading the
asctime format. HTTP-date is case sensitive and MUST NOT include asctime format. HTTP-date is case sensitive and MUST NOT include
additional whitespace beyond that specifically included as SP in the additional whitespace beyond that specifically included as SP in the
grammar. grammar.
HTTP-date = rfc1123-date / obs-date HTTP-date = rfc1123-date / obs-date
Preferred format: Preferred format:
rfc1123-date = day-name "," SP date1 SP time-of-day SP GMT rfc1123-date = day-name "," SP date1 SP time-of-day SP GMT
; fixed length subset of the format defined in
; Section 5.2.14 of [RFC1123]
day-name = %x4D.6F.6E ; "Mon", case-sensitive day-name = %x4D.6F.6E ; "Mon", case-sensitive
/ %x54.75.65 ; "Tue", case-sensitive / %x54.75.65 ; "Tue", case-sensitive
/ %x57.65.64 ; "Wed", case-sensitive / %x57.65.64 ; "Wed", case-sensitive
/ %x54.68.75 ; "Thu", case-sensitive / %x54.68.75 ; "Thu", case-sensitive
/ %x46.72.69 ; "Fri", case-sensitive / %x46.72.69 ; "Fri", case-sensitive
/ %x53.61.74 ; "Sat", case-sensitive / %x53.61.74 ; "Sat", case-sensitive
/ %x53.75.6E ; "Sun", case-sensitive / %x53.75.6E ; "Sun", case-sensitive
date1 = day SP month SP year date1 = day SP month SP year
skipping to change at page 36, line 23 skipping to change at page 36, line 23
Section 9.6). Section 9.6).
A server using chunked transfer-coding in a response MUST NOT use the A server using chunked transfer-coding in a response MUST NOT use the
trailer for any header fields unless at least one of the following is trailer for any header fields unless at least one of the following is
true: true:
1. the request included a TE header field that indicates "trailers" 1. the request included a TE header field that indicates "trailers"
is acceptable in the transfer-coding of the response, as is acceptable in the transfer-coding of the response, as
described in Section 9.5; or, described in Section 9.5; or,
2. the server is the origin server for the response, the trailer 2. the trailer fields consist entirely of optional metadata, and the
fields consist entirely of optional metadata, and the recipient recipient could use the message (in a manner acceptable to the
could use the message (in a manner acceptable to the origin server where the field originated) without receiving it. In
server) without receiving this metadata. In other words, the other words, the server that generated the header (often but not
origin server is willing to accept the possibility that the always the origin server) is willing to accept the possibility
trailer fields might be silently discarded along the path to the that the trailer fields might be silently discarded along the
client. path to the client.
This requirement prevents an interoperability failure when the This requirement prevents an interoperability failure when the
message is being received by an HTTP/1.1 (or later) proxy and message is being received by an HTTP/1.1 (or later) proxy and
forwarded to an HTTP/1.0 recipient. It avoids a situation where forwarded to an HTTP/1.0 recipient. It avoids a situation where
compliance with the protocol would have necessitated a possibly compliance with the protocol would have necessitated a possibly
infinite buffer on the proxy. infinite buffer on the proxy.
A process for decoding the "chunked" transfer-coding can be A process for decoding the "chunked" transfer-coding can be
represented in pseudo-code as: represented in pseudo-code as:
skipping to change at page 39, line 31 skipping to change at page 39, line 31
Product tokens SHOULD be short and to the point. They MUST NOT be Product tokens SHOULD be short and to the point. They MUST NOT be
used for advertising or other non-essential information. Although used for advertising or other non-essential information. Although
any token character MAY appear in a product-version, this token any token character MAY appear in a product-version, this token
SHOULD only be used for a version identifier (i.e., successive SHOULD only be used for a version identifier (i.e., successive
versions of the same product SHOULD only differ in the product- versions of the same product SHOULD only differ in the product-
version portion of the product value). version portion of the product value).
6.4. Quality Values 6.4. Quality Values
Both transfer codings (TE request header, Section 9.5) and content Both transfer codings (TE request header field, Section 9.5) and
negotiation (Section 5 of [Part3]) use short "floating point" numbers content negotiation (Section 5 of [Part3]) use short "floating point"
to indicate the relative importance ("weight") of various negotiable numbers to indicate the relative importance ("weight") of various
parameters. A weight is normalized to a real number in the range 0 negotiable parameters. A weight is normalized to a real number in
through 1, where 0 is the minimum and 1 the maximum value. If a the range 0 through 1, where 0 is the minimum and 1 the maximum
parameter has a quality value of 0, then content with this parameter value. If a parameter has a quality value of 0, then content with
is "not acceptable" for the client. HTTP/1.1 applications MUST NOT this parameter is "not acceptable" for the client. HTTP/1.1
generate more than three digits after the decimal point. User applications MUST NOT generate more than three digits after the
configuration of these values SHOULD also be limited in this fashion. decimal point. User configuration of these values SHOULD also be
limited in this fashion.
qvalue = ( "0" [ "." 0*3DIGIT ] ) qvalue = ( "0" [ "." 0*3DIGIT ] )
/ ( "1" [ "." 0*3("0") ] ) / ( "1" [ "." 0*3("0") ] )
Note: "Quality values" is a misnomer, since these values merely Note: "Quality values" is a misnomer, since these values merely
represent relative degradation in desired quality. represent relative degradation in desired quality.
7. Connections 7. Connections
7.1. Persistent Connections 7.1. Persistent Connections
7.1.1. Purpose 7.1.1. Purpose
Prior to persistent connections, a separate TCP connection was Prior to persistent connections, a separate TCP connection was
established to fetch each URL, increasing the load on HTTP servers established to fetch each URL, increasing the load on HTTP servers
and causing congestion on the Internet. The use of inline images and and causing congestion on the Internet. The use of inline images and
other associated data often requires a client to make multiple other associated data often requires a client to make multiple
requests of the same server in a short amount of time. Analysis of requests of the same server in a short amount of time. Analysis of
these performance problems and results from a prototype these performance problems and results from a prototype
implementation are available [Pad1995] [Spe]. Implementation implementation are available [Pad1995] [Spe]. Implementation
experience and measurements of actual HTTP/1.1 implementations show experience and measurements of actual HTTP/1.1 implementations show
skipping to change at page 41, line 14 skipping to change at page 41, line 15
Persistent connections provide a mechanism by which a client and a Persistent connections provide a mechanism by which a client and a
server can signal the close of a TCP connection. This signaling server can signal the close of a TCP connection. This signaling
takes place using the Connection header field (Section 9.1). Once a takes place using the Connection header field (Section 9.1). Once a
close has been signaled, the client MUST NOT send any more requests close has been signaled, the client MUST NOT send any more requests
on that connection. on that connection.
7.1.2.1. Negotiation 7.1.2.1. Negotiation
An HTTP/1.1 server MAY assume that a HTTP/1.1 client intends to An HTTP/1.1 server MAY assume that a HTTP/1.1 client intends to
maintain a persistent connection unless a Connection header including maintain a persistent connection unless a Connection header field
the connection-token "close" was sent in the request. If the server including the connection-token "close" was sent in the request. If
chooses to close the connection immediately after sending the the server chooses to close the connection immediately after sending
response, it SHOULD send a Connection header including the the response, it SHOULD send a Connection header field including the
connection-token "close". connection-token "close".
An HTTP/1.1 client MAY expect a connection to remain open, but would An HTTP/1.1 client MAY expect a connection to remain open, but would
decide to keep it open based on whether the response from a server decide to keep it open based on whether the response from a server
contains a Connection header with the connection-token close. In contains a Connection header field with the connection-token close.
case the client does not want to maintain a connection for more than In case the client does not want to maintain a connection for more
that request, it SHOULD send a Connection header including the than that request, it SHOULD send a Connection header field including
connection-token close. the connection-token close.
If either the client or the server sends the close token in the If either the client or the server sends the close token in the
Connection header, that request becomes the last one for the Connection header field, that request becomes the last one for the
connection. connection.
Clients and servers SHOULD NOT assume that a persistent connection is Clients and servers SHOULD NOT assume that a persistent connection is
maintained for HTTP versions less than 1.1 unless it is explicitly maintained for HTTP versions less than 1.1 unless it is explicitly
signaled. See Appendix B.2 for more information on backward signaled. See Appendix B.2 for more information on backward
compatibility with HTTP/1.0 clients. compatibility with HTTP/1.0 clients.
In order to remain persistent, all messages on the connection MUST In order to remain persistent, all messages on the connection MUST
have a self-defined message length (i.e., one not defined by closure have a self-defined message length (i.e., one not defined by closure
of the connection), as described in Section 3.3. of the connection), as described in Section 3.3.
skipping to change at page 42, line 27 skipping to change at page 42, line 29
Section 9.1. Section 9.1.
The proxy server MUST signal persistent connections separately with The proxy server MUST signal persistent connections separately with
its clients and the origin servers (or other proxy servers) that it its clients and the origin servers (or other proxy servers) that it
connects to. Each persistent connection applies to only one connects to. Each persistent connection applies to only one
transport link. transport link.
A proxy server MUST NOT establish a HTTP/1.1 persistent connection A proxy server MUST NOT establish a HTTP/1.1 persistent connection
with an HTTP/1.0 client (but see Section 19.7.1 of [RFC2068] for with an HTTP/1.0 client (but see Section 19.7.1 of [RFC2068] for
information and discussion of the problems with the Keep-Alive header information and discussion of the problems with the Keep-Alive header
implemented by many HTTP/1.0 clients). field implemented by many HTTP/1.0 clients).
7.1.3.1. End-to-end and Hop-by-hop Headers 7.1.3.1. End-to-end and Hop-by-hop Header Fields
For the purpose of defining the behavior of caches and non-caching For the purpose of defining the behavior of caches and non-caching
proxies, we divide HTTP headers into two categories: proxies, we divide HTTP header fields into two categories:
o End-to-end headers, which are transmitted to the ultimate o End-to-end header fields, which are transmitted to the ultimate
recipient of a request or response. End-to-end headers in recipient of a request or response. End-to-end header fields in
responses MUST be stored as part of a cache entry and MUST be responses MUST be stored as part of a cache entry and MUST be
transmitted in any response formed from a cache entry. transmitted in any response formed from a cache entry.
o Hop-by-hop headers, which are meaningful only for a single o Hop-by-hop header fields, which are meaningful only for a single
transport-level connection, and are not stored by caches or transport-level connection, and are not stored by caches or
forwarded by proxies. forwarded by proxies.
The following HTTP/1.1 headers are hop-by-hop headers: The following HTTP/1.1 header fields are hop-by-hop header fields:
o Connection o Connection
o Keep-Alive o Keep-Alive
o Proxy-Authenticate o Proxy-Authenticate
o Proxy-Authorization o Proxy-Authorization
o TE o TE
o Trailer o Trailer
o Transfer-Encoding o Transfer-Encoding
o Upgrade o Upgrade
skipping to change at page 43, line 14 skipping to change at page 43, line 16
o Proxy-Authorization o Proxy-Authorization
o TE o TE
o Trailer o Trailer
o Transfer-Encoding o Transfer-Encoding
o Upgrade o Upgrade
All other headers defined by HTTP/1.1 are end-to-end headers. All other header fields defined by HTTP/1.1 are end-to-end header
fields.
Other hop-by-hop headers MUST be listed in a Connection header Other hop-by-hop header fields MUST be listed in a Connection header
(Section 9.1). field (Section 9.1).
7.1.3.2. Non-modifiable Headers 7.1.3.2. Non-modifiable Header Fields
Some features of HTTP/1.1, such as Digest Authentication, depend on Some features of HTTP/1.1, such as Digest Authentication, depend on
the value of certain end-to-end headers. A transparent proxy SHOULD the value of certain end-to-end header fields. A transparent proxy
NOT modify an end-to-end header unless the definition of that header SHOULD NOT modify an end-to-end header field unless the definition of
requires or specifically allows that. that header field requires or specifically allows that.
A transparent proxy MUST NOT modify any of the following fields in a A transparent proxy MUST NOT modify any of the following fields in a
request or response, and it MUST NOT add any of these fields if not request or response, and it MUST NOT add any of these fields if not
already present: already present:
o Content-Location o Content-Location
o Content-MD5 o Content-MD5
o ETag o ETag
o Last-Modified o Last-Modified
A transparent proxy MUST NOT modify any of the following fields in a A transparent proxy MUST NOT modify any of the following fields in a
response: response:
o Expires o Expires
but it MAY add any of these fields if not already present. If an but it MAY add any of these fields if not already present. If an
Expires header is added, it MUST be given a field-value identical to Expires header field is added, it MUST be given a field-value
that of the Date header in that response. identical to that of the Date header field in that response.
A proxy MUST NOT modify or add any of the following fields in a A proxy MUST NOT modify or add any of the following fields in a
message that contains the no-transform cache-control directive, or in message that contains the no-transform cache-control directive, or in
any request: any request:
o Content-Encoding o Content-Encoding
o Content-Range o Content-Range
o Content-Type o Content-Type
A non-transparent proxy MAY modify or add these fields to a message A non-transparent proxy MAY modify or add these fields to a message
that does not include no-transform, but if it does so, it MUST add a that does not include no-transform, but if it does so, it MUST add a
Warning 214 (Transformation applied) if one does not already appear Warning 214 (Transformation applied) if one does not already appear
in the message (see Section 3.6 of [Part6]). in the message (see Section 3.6 of [Part6]).
Warning: Unnecessary modification of end-to-end headers might Warning: Unnecessary modification of end-to-end header fields
cause authentication failures if stronger authentication might 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.
A transparent proxy MUST preserve the message payload ([Part3]), A transparent proxy MUST preserve the message payload ([Part3]),
though it MAY change the message-body through application or removal though it MAY change the message-body through application or removal
of a transfer-coding (Section 6.2). of a transfer-coding (Section 6.2).
7.1.4. Practical Considerations 7.1.4. Practical Considerations
skipping to change at page 46, line 6 skipping to change at page 46, line 8
The latter technique can exacerbate network congestion. The latter technique can exacerbate network congestion.
7.2.2. Monitoring Connections for Error Status Messages 7.2.2. Monitoring Connections for Error Status Messages
An HTTP/1.1 (or later) client sending a message-body SHOULD monitor An HTTP/1.1 (or later) client sending a message-body SHOULD monitor
the network connection for an error status code while it is the network connection for an error status code while it is
transmitting the request. If the client sees an error status code, transmitting the request. If the client sees an error status code,
it SHOULD immediately cease transmitting the body. If the body is it SHOULD immediately cease transmitting the body. If the body is
being sent using a "chunked" encoding (Section 6.2), a zero length being sent using a "chunked" encoding (Section 6.2), a zero length
chunk and empty trailer MAY be used to prematurely mark the end of chunk and empty trailer MAY be used to prematurely mark the end of
the message. If the body was preceded by a Content-Length header, the message. If the body was preceded by a Content-Length header
the client MUST close the connection. field, the client MUST close the connection.
7.2.3. Use of the 100 (Continue) Status 7.2.3. Use of the 100 (Continue) Status
The purpose of the 100 (Continue) status code (see Section 8.1.1 of The purpose of the 100 (Continue) status code (see Section 8.1.1 of
[Part2]) is to allow a client that is sending a request message with [Part2]) is to allow a client that is sending a request message with
a request body to determine if the origin server is willing to accept a request body to determine if the origin server is willing to accept
the request (based on the request headers) before the client sends the request (based on the request header fields) before the client
the request body. In some cases, it might either be inappropriate or sends the request body. In some cases, it might either be
highly inefficient for the client to send the body if the server will inappropriate or highly inefficient for the client to send the body
reject the message without looking at the body. if the server will reject the message without looking at the body.
Requirements for HTTP/1.1 clients: Requirements for HTTP/1.1 clients:
o If a client will wait for a 100 (Continue) response before sending o If a client will wait for a 100 (Continue) response before sending
the request body, it MUST send an Expect request-header field the request body, it MUST send an Expect request-header field
(Section 9.2 of [Part2]) with the "100-continue" expectation. (Section 9.2 of [Part2]) with the "100-continue" expectation.
o A client MUST NOT send an Expect request-header field (Section 9.2 o A client MUST NOT send an Expect request-header field (Section 9.2
of [Part2]) with the "100-continue" expectation if it does not of [Part2]) with the "100-continue" expectation if it does not
intend to send a request body. intend to send a request body.
skipping to change at page 48, line 24 skipping to change at page 48, line 27
but which does not include an Expect request-header field with the but which does not include an Expect request-header field with the
"100-continue" expectation, and if the client is not directly "100-continue" expectation, and if the client is not directly
connected to an HTTP/1.1 origin server, and if the client sees the connected to an HTTP/1.1 origin server, and if the client sees the
connection close before receiving a status line from the server, the connection close before receiving a status line from the server, the
client SHOULD retry the request. If the client does retry this client SHOULD retry the request. If the client does retry this
request, it MAY use the following "binary exponential backoff" request, it MAY use the following "binary exponential backoff"
algorithm to be assured of obtaining a reliable response: algorithm to be assured of obtaining a reliable response:
1. Initiate a new connection to the server 1. Initiate a new connection to the server
2. Transmit the request-headers 2. Transmit the request-header fields
3. Initialize a variable R to the estimated round-trip time to the 3. Initialize a variable R to the estimated round-trip time to the
server (e.g., based on the time it took to establish the server (e.g., based on the time it took to establish the
connection), or to a constant value of 5 seconds if the round- connection), or to a constant value of 5 seconds if the round-
trip time is not available. trip time is not available.
4. Compute T = R * (2**N), where N is the number of previous retries 4. Compute T = R * (2**N), where N is the number of previous retries
of this request. of this request.
5. Wait either for an error response from the server, or for T 5. Wait either for an error response from the server, or for T
skipping to change at page 49, line 43 skipping to change at page 49, line 45
This section defines the syntax and semantics of HTTP/1.1 header This section defines the syntax and semantics of HTTP/1.1 header
fields related to message framing and transport protocols. fields related to message framing and transport protocols.
9.1. Connection 9.1. Connection
The "Connection" general-header field allows the sender to specify The "Connection" general-header field allows the sender to specify
options that are desired for that particular connection and MUST NOT options that are desired for that particular connection and MUST NOT
be communicated by proxies over further connections. be communicated by proxies over further connections.
The Connection header's value has the following grammar: The Connection header field's value has the following grammar:
Connection = "Connection" ":" OWS Connection-v Connection = "Connection" ":" OWS Connection-v
Connection-v = 1#connection-token Connection-v = 1#connection-token
connection-token = token connection-token = token
HTTP/1.1 proxies MUST parse the Connection header field before a HTTP/1.1 proxies MUST parse the Connection header field before a
message is forwarded and, for each connection-token in this field, message is forwarded and, for each connection-token in this field,
remove any header field(s) from the message with the same name as the remove any header field(s) from the message with the same name as the
connection-token. Connection options are signaled by the presence of connection-token. Connection options are signaled by the presence of
a connection-token in the Connection header field, not by any a connection-token in the Connection header field, not by any
corresponding additional header field(s), since the additional header corresponding additional header field(s), since the additional header
field might not be sent if there are no parameters associated with field might not be sent if there are no parameters associated with
that connection option. that connection option.
Message headers listed in the Connection header MUST NOT include end- Message header fields listed in the Connection header field MUST NOT
to-end headers, such as Cache-Control. include end-to-end header fields, such as Cache-Control.
HTTP/1.1 defines the "close" connection option for the sender to HTTP/1.1 defines the "close" connection option for the sender to
signal that the connection will be closed after completion of the signal that the connection will be closed after completion of the
response. For example, response. For example,
Connection: close Connection: close
in either the request or the response header fields indicates that in either the request or the response header fields indicates that
the connection SHOULD NOT be considered "persistent" (Section 7.1) the connection SHOULD NOT be considered "persistent" (Section 7.1)
after the current request/response is complete. after the current request/response is complete.
An HTTP/1.1 client that does not support persistent connections MUST An HTTP/1.1 client that does not support persistent connections MUST
include the "close" connection option in every request message. include the "close" connection option in every request message.
An HTTP/1.1 server that does not support persistent connections MUST An HTTP/1.1 server that does not support persistent connections MUST
include the "close" connection option in every response message that include the "close" connection option in every response message that
does not have a 1xx (Informational) status code. does not have a 1xx (Informational) status code.
A system receiving an HTTP/1.0 (or lower-version) message that A system receiving an HTTP/1.0 (or lower-version) message that
includes a Connection header MUST, for each connection-token in this includes a Connection header field MUST, for each connection-token in
field, remove and ignore any header field(s) from the message with this field, remove and ignore any header field(s) from the message
the same name as the connection-token. This protects against with the same name as the connection-token. This protects against
mistaken forwarding of such header fields by pre-HTTP/1.1 proxies. mistaken forwarding of such header fields by pre-HTTP/1.1 proxies.
See Appendix B.2. See Appendix B.2.
9.2. Content-Length 9.2. Content-Length
The "Content-Length" header field indicates the size of the message- The "Content-Length" header field indicates the size of the message-
body, in decimal number of octets, for any message other than a body, in decimal number of octets, for any message other than a
response to the HEAD method or a response with a status code of 304. response to the HEAD method or a response with a status code of 304.
In the case of responses to the HEAD method, it indicates the size of In the case of responses to the HEAD method, it indicates the size of
the payload body (not including any potential transfer-coding) that the payload body (not including any potential transfer-coding) that
skipping to change at page 51, line 51 skipping to change at page 52, line 7
(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.
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 9.3.1 a Date header field. In this case, the rules in Section 9.3.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.
implementation without a clock MUST NOT cache responses without
revalidating them on every use. An HTTP cache, especially a shared
cache, SHOULD use a mechanism, such as NTP [RFC1305], to synchronize
its clock with a reliable external standard.
Clients SHOULD only send a Date header field in messages that include Clients can use the Date header field as well; in order to keep
a payload, as is usually the case for PUT and POST requests, and even request messages small, they are advised not to include it when it
then it is optional. A client without a clock MUST NOT send a Date doesn't convey any useful information (as it is usually the case for
header field in a request. requests that do not contain a payload).
The HTTP-date sent in a Date header SHOULD NOT represent a date and The HTTP-date sent in a Date header field SHOULD NOT represent a date
time subsequent to the generation of the message. It SHOULD and 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
generating a reasonably accurate date and time. In theory, the date generating a reasonably accurate date and time. In theory, the date
ought to represent the moment just before the payload is generated. ought to represent the moment just before the payload is generated.
In practice, the date can be generated at any time during the message In practice, the date can be generated at any time during the message
origination without affecting its semantic value. origination without affecting its semantic value.
9.3.1. Clockless Origin Server Operation 9.3.1. Clockless Origin Server Operation
Some origin server implementations might not have a clock available. Some origin server implementations might not have a clock available.
skipping to change at page 55, line 36 skipping to change at page 55, line 34
Transfer-codings are defined in Section 6.2. An example is: Transfer-codings are defined in Section 6.2. An example is:
Transfer-Encoding: chunked Transfer-Encoding: chunked
If multiple encodings have been applied to a representation, the If multiple encodings have been applied to a representation, the
transfer-codings MUST be listed in the order in which they were transfer-codings MUST be listed in the order in which they were
applied. Additional information about the encoding parameters MAY be applied. Additional information about the encoding parameters MAY be
provided by other header fields not defined by this specification. provided by other header fields not defined by this specification.
Many older HTTP/1.0 applications do not understand the Transfer- Many older HTTP/1.0 applications do not understand the Transfer-
Encoding header. Encoding header field.
9.8. Upgrade 9.8. Upgrade
The "Upgrade" general-header field allows the client to specify what The "Upgrade" general-header field allows the client to specify what
additional communication protocols it would like to use, if the additional communication protocols it would like to use, if the
server chooses to switch protocols. Additionally, the server MUST server chooses to switch protocols. Additionally, the server MUST
use the Upgrade header field within a 101 (Switching Protocols) use the Upgrade header field within a 101 (Switching Protocols)
response to indicate which protocol(s) are being switched to. response to indicate which protocol(s) are being switched to.
Upgrade = "Upgrade" ":" OWS Upgrade-v Upgrade = "Upgrade" ":" OWS Upgrade-v
skipping to change at page 66, line 36 skipping to change at page 66, line 36
13.1. Normative References 13.1. Normative References
[ISO-8859-1] International Organization for Standardization, [ISO-8859-1] International Organization for Standardization,
"Information technology -- 8-bit single-byte coded "Information technology -- 8-bit single-byte coded
graphic character sets -- Part 1: Latin alphabet No. graphic character sets -- Part 1: Latin alphabet No.
1", ISO/IEC 8859-1:1998, 1998. 1", ISO/IEC 8859-1:1998, 1998.
[Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y.,
Ed., and J. Reschke, Ed., "HTTP/1.1, part 2: Message Ed., and J. Reschke, Ed., "HTTP/1.1, part 2: Message
Semantics", draft-ietf-httpbis-p2-semantics-11 (work in Semantics", draft-ietf-httpbis-p2-semantics-12 (work in
progress), August 2010. progress), October 2010.
[Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y.,
Ed., and J. Reschke, Ed., "HTTP/1.1, part 3: Message Ed., and J. Reschke, Ed., "HTTP/1.1, part 3: Message
Payload and Content Negotiation", Payload and Content Negotiation",
draft-ietf-httpbis-p3-payload-11 (work in progress), draft-ietf-httpbis-p3-payload-12 (work in progress),
August 2010. October 2010.
[Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part6] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y.,
Ed., Nottingham, M., Ed., and J. Reschke, Ed., Ed., Nottingham, M., Ed., and J. Reschke, Ed.,
"HTTP/1.1, part 6: Caching", "HTTP/1.1, part 6: Caching",
draft-ietf-httpbis-p6-cache-11 (work in progress), draft-ietf-httpbis-p6-cache-12 (work in progress),
August 2010. October 2010.
[RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data [RFC1950] Deutsch, L. and J-L. Gailly, "ZLIB Compressed Data
Format Specification version 3.3", RFC 1950, May 1996. Format Specification version 3.3", RFC 1950, May 1996.
RFC 1950 is an Informational RFC, thus it might be less RFC 1950 is an Informational RFC, thus it might be less
stable than this specification. On the other hand, stable than this specification. On the other hand,
this downward reference was present since the this downward reference was present since the
publication of RFC 2068 in 1997 ([RFC2068]), therefore publication of RFC 2068 in 1997 ([RFC2068]), therefore
it is unlikely to cause problems in practice. See also it is unlikely to cause problems in practice. See also
[BCP97]. [BCP97].
skipping to change at page 67, line 41 skipping to change at page 67, line 41
this downward reference was present since the this downward reference was present since the
publication of RFC 2068 in 1997 ([RFC2068]), therefore publication of RFC 2068 in 1997 ([RFC2068]), therefore
it is unlikely to cause problems in practice. See also it is unlikely to cause problems in practice. See also
[BCP97]. [BCP97].
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter,
"Uniform Resource Identifier (URI): Generic Syntax", "Uniform Resource Identifier (URI): Generic Syntax",
RFC 3986, STD 66, January 2005. STD 66, RFC 3986, January 2005.
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for
Syntax Specifications: ABNF", STD 68, RFC 5234, Syntax Specifications: ABNF", STD 68, RFC 5234,
January 2008. January 2008.
[USASCII] American National Standards Institute, "Coded Character [USASCII] American National Standards Institute, "Coded Character
Set -- 7-bit American Standard Code for Information Set -- 7-bit American Standard Code for Information
Interchange", ANSI X3.4, 1986. Interchange", ANSI X3.4, 1986.
13.2. Informative References 13.2. Informative References
skipping to change at page 68, line 33 skipping to change at page 68, line 33
[Pad1995] Padmanabhan, V. and J. Mogul, "Improving HTTP Latency", [Pad1995] Padmanabhan, V. and J. Mogul, "Improving HTTP Latency",
Computer Networks and ISDN Systems v. 28, pp. 25-35, Computer Networks and ISDN Systems v. 28, pp. 25-35,
December 1995, December 1995,
<http://portal.acm.org/citation.cfm?id=219094>. <http://portal.acm.org/citation.cfm?id=219094>.
[RFC1123] Braden, R., "Requirements for Internet Hosts - [RFC1123] Braden, R., "Requirements for Internet Hosts -
Application and Support", STD 3, RFC 1123, Application and Support", STD 3, RFC 1123,
October 1989. October 1989.
[RFC1305] Mills, D., "Network Time Protocol (Version 3)
Specification, Implementation", RFC 1305, March 1992.
[RFC1900] Carpenter, B. and Y. Rekhter, "Renumbering Needs Work", [RFC1900] Carpenter, B. and Y. Rekhter, "Renumbering Needs Work",
RFC 1900, February 1996. RFC 1900, February 1996.
[RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen, [RFC1945] Berners-Lee, T., Fielding, R., and H. Nielsen,
"Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945, "Hypertext Transfer Protocol -- HTTP/1.0", RFC 1945,
May 1996. May 1996.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet
Mail Extensions (MIME) Part One: Format of Internet Mail Extensions (MIME) Part One: Format of Internet
Message Bodies", RFC 2045, November 1996. Message Bodies", RFC 2045, November 1996.
skipping to change at page 70, line 19 skipping to change at page 70, line 19
implementation. We therefore recommend that operational applications implementation. We therefore recommend that operational applications
be tolerant of deviations whenever those deviations can be be tolerant of deviations whenever those deviations can be
interpreted unambiguously. interpreted unambiguously.
Clients SHOULD be tolerant in parsing the Status-Line and servers Clients SHOULD be tolerant in parsing the Status-Line and servers
SHOULD be tolerant when parsing the Request-Line. In particular, SHOULD be tolerant when parsing the Request-Line. In particular,
they SHOULD accept any amount of WSP characters between fields, even they SHOULD accept any amount of WSP characters between fields, even
though only a single SP is required. though only a single SP is required.
The line terminator for header fields is the sequence CRLF. However, The line terminator for header fields is the sequence CRLF. However,
we recommend that applications, when parsing such headers, recognize we recommend that applications, when parsing such headers fields,
a single LF as a line terminator and ignore the leading CR. recognize a single LF as a line terminator and ignore the leading CR.
The character set of a representation SHOULD be labeled as the lowest The character set of a representation SHOULD be labeled as the lowest
common denominator of the character codes used within that common denominator of the character codes used within that
representation, with the exception that not labeling the representation, with the exception that not labeling the
representation is preferred over labeling the representation with the representation is preferred over labeling the representation with the
labels US-ASCII or ISO-8859-1. See [Part3]. labels US-ASCII or ISO-8859-1. See [Part3].
Additional rules for requirements on parsing and encoding of dates Additional rules for requirements on parsing and encoding of dates
and other potential problems with date encodings include: and other potential problems with date encodings include:
skipping to change at page 70, line 48 skipping to change at page 70, line 48
o An HTTP/1.1 implementation MAY internally represent a parsed o An HTTP/1.1 implementation MAY internally represent a parsed
Expires date as earlier than the proper value, but MUST NOT Expires date as earlier than the proper value, but MUST NOT
internally represent a parsed Expires date as later than the internally represent a parsed Expires date as later than the
proper value. proper value.
o All expiration-related calculations MUST be done in GMT. The o All expiration-related calculations MUST be done in GMT. The
local time zone MUST NOT influence the calculation or comparison local time zone MUST NOT influence the calculation or comparison
of an age or expiration time. of an age or expiration time.
o If an HTTP header incorrectly carries a date value with a time o If an HTTP header field incorrectly carries a date value with a
zone other than GMT, it MUST be converted into GMT using the most time zone other than GMT, it MUST be converted into GMT using the
conservative possible conversion. most conservative possible conversion.
Appendix B. Compatibility with Previous Versions Appendix B. Compatibility with Previous Versions
HTTP has been in use by the World-Wide Web global information HTTP has been in use by the World-Wide Web global information
initiative since 1990. The first version of HTTP, later referred to initiative since 1990. The first version of HTTP, later referred to
as HTTP/0.9, was a simple protocol for hypertext data transfer across as HTTP/0.9, was a simple protocol for hypertext data transfer across
the Internet with only a single method and no metadata. HTTP/1.0, as the Internet with only a single method and no metadata. HTTP/1.0, as
defined by [RFC1945], added a range of request methods and MIME-like defined by [RFC1945], added a range of request methods and MIME-like
messaging that could include metadata about the data transferred and messaging that could include metadata about the data transferred and
modifiers on the request/response semantics. However, HTTP/1.0 did modifiers on the request/response semantics. However, HTTP/1.0 did
skipping to change at page 72, line 9 skipping to change at page 72, line 9
B.1. Changes from HTTP/1.0 B.1. Changes from HTTP/1.0
This section summarizes major differences between versions HTTP/1.0 This section summarizes major differences between versions HTTP/1.0
and HTTP/1.1. and HTTP/1.1.
B.1.1. Changes to Simplify Multi-homed Web Servers and Conserve IP B.1.1. Changes to Simplify Multi-homed Web Servers and Conserve IP
Addresses Addresses
The requirements that clients and servers support the Host request- The requirements that clients and servers support the Host request-
header, report an error if the Host request-header (Section 9.4) is header field (Section 9.4), report an error if it is missing from an
missing from an HTTP/1.1 request, and accept absolute URIs HTTP/1.1 request, and accept absolute URIs (Section 4.1.2) are among
(Section 4.1.2) are among the most important changes defined by this the most important changes defined by this specification.
specification.
Older HTTP/1.0 clients assumed a one-to-one relationship of IP Older HTTP/1.0 clients assumed a one-to-one relationship of IP
addresses and servers; there was no other established mechanism for addresses and servers; there was no other established mechanism for
distinguishing the intended server of a request than the IP address distinguishing the intended server of a request than the IP address
to which that request was directed. The changes outlined above will to which that request was directed. The changes outlined above will
allow the Internet, once older HTTP clients are no longer common, to allow the Internet, once older HTTP clients are no longer common, to
support multiple Web sites from a single IP address, greatly support multiple Web sites from a single IP address, greatly
simplifying large operational Web servers, where allocation of many simplifying large operational Web servers, where allocation of many
IP addresses to a single host has created serious problems. The IP addresses to a single host has created serious problems. The
Internet will also be able to recover the IP addresses that have been Internet will also be able to recover the IP addresses that have been
allocated for the sole purpose of allowing special-purpose domain allocated for the sole purpose of allowing special-purpose domain
names to be used in root-level HTTP URLs. Given the rate of growth names to be used in root-level HTTP URLs. Given the rate of growth
of the Web, and the number of servers already deployed, it is of the Web, and the number of servers already deployed, it is
extremely important that all implementations of HTTP (including extremely important that all implementations of HTTP (including
updates to existing HTTP/1.0 applications) correctly implement these updates to existing HTTP/1.0 applications) correctly implement these
requirements: requirements:
o Both clients and servers MUST support the Host request-header. o Both clients and servers MUST support the Host request-header
field.
o A client that sends an HTTP/1.1 request MUST send a Host header. o A client that sends an HTTP/1.1 request MUST send a Host header
field.
o Servers MUST report a 400 (Bad Request) error if an HTTP/1.1 o Servers MUST report a 400 (Bad Request) error if an HTTP/1.1
request does not include a Host request-header. request does not include a Host request-header field.
o Servers MUST accept absolute URIs. o Servers MUST accept absolute URIs.
B.2. Compatibility with HTTP/1.0 Persistent Connections B.2. Compatibility with HTTP/1.0 Persistent Connections
Some clients and servers might wish to be compatible with some Some clients and servers might wish to be compatible with some
previous implementations of persistent connections in HTTP/1.0 previous implementations of persistent connections in HTTP/1.0
clients and servers. Persistent connections in HTTP/1.0 are clients and servers. Persistent connections in HTTP/1.0 are
explicitly negotiated as they are not the default behavior. HTTP/1.0 explicitly negotiated as they are not the default behavior. HTTP/1.0
experimental implementations of persistent connections are faulty, experimental implementations of persistent connections are faulty,
skipping to change at page 73, line 15 skipping to change at page 73, line 16
However, talking to proxies is the most important use of persistent However, talking to proxies is the most important use of persistent
connections, so that prohibition is clearly unacceptable. Therefore, connections, so that prohibition is clearly unacceptable. Therefore,
we need some other mechanism for indicating a persistent connection we need some other mechanism for indicating a persistent connection
is desired, which is safe to use even when talking to an old proxy is desired, which is safe to use even when talking to an old proxy
that ignores Connection. Persistent connections are the default for that ignores Connection. Persistent connections are the default for
HTTP/1.1 messages; we introduce a new keyword (Connection: close) for HTTP/1.1 messages; we introduce a new keyword (Connection: close) for
declaring non-persistence. See Section 9.1. declaring non-persistence. See Section 9.1.
The original HTTP/1.0 form of persistent connections (the Connection: The original HTTP/1.0 form of persistent connections (the Connection:
Keep-Alive and Keep-Alive header) is documented in Section 19.7.1 of Keep-Alive and Keep-Alive header field) is documented in Section
[RFC2068]. 19.7.1 of [RFC2068].
B.3. Changes from RFC 2616 B.3. Changes from RFC 2616
Empty list elements in list productions have been deprecated. Empty list elements in list productions have been deprecated.
(Section 1.2.1) (Section 1.2.1)
Rules about implicit linear whitespace between certain grammar Rules about implicit linear whitespace between certain grammar
productions have been removed; now it's only allowed when productions have been removed; now it's only allowed when
specifically pointed out in the ABNF. The NUL character is no longer specifically pointed out in the ABNF. The NUL character is no longer
allowed in comment and quoted-string text. The quoted-pair rule no allowed in comment and quoted-string text. The quoted-pair rule no
longer allows escaping control characters other than HTAB. Non-ASCII longer allows escaping control characters other than HTAB. Non-ASCII
content in header fields and reason phrase has been obsoleted and content in header fields and reason phrase has been obsoleted and
made opaque (the TEXT rule was removed) (Section 1.2.2) made opaque (the TEXT rule was removed) (Section 1.2.2)
Clarify that HTTP-Version is case sensitive. (Section 2.5) Clarify that HTTP-Version is case sensitive. (Section 2.5)
Remove reference to non-existent identity transfer-coding value
tokens. (Sections 6.2 and 3.3)
Require that invalid whitespace around field-names be rejected. Require that invalid whitespace around field-names be rejected.
(Section 3.2) (Section 3.2)
Update use of abs_path production from RFC1808 to the path-absolute + Require recipients to handle bogus Content-Length header fields as
query components of RFC3986. (Section 4.1.2) errors. (Section 3.3)
Remove reference to non-existent identity transfer-coding value
tokens. (Sections 3.3 and 6.2)
Update use of abs_path production from RFC 1808 to the path-absolute
+ query components of RFC 3986. (Section 4.1.2)
Clarification that the chunk length does not include the count of the Clarification that the chunk length does not include the count of the
octets in the chunk header and trailer. Furthermore disallowed line octets in the chunk header and trailer. Furthermore disallowed line
folding in chunk extensions. (Section 6.2.1) folding in chunk extensions. (Section 6.2.1)
Remove hard limit of two connections per server. (Section 7.1.4) Remove hard limit of two connections per server. (Section 7.1.4)
Clarify exactly when close connection options must be sent. Clarify exactly when close connection options must be sent.
(Section 9.1) (Section 9.1)
Appendix C. Collected ABNF Appendix C. Collected ABNF
BWS = OWS BWS = OWS
Cache-Control = <Cache-Control, defined in [Part6], Section 3.4> Cache-Control = <Cache-Control, defined in [Part6], Section 3.4>
Chunked-Body = *chunk last-chunk trailer-part CRLF Chunked-Body = *chunk last-chunk trailer-part CRLF
Connection = "Connection:" OWS Connection-v Connection = "Connection:" OWS Connection-v
Connection-v = *( "," OWS ) connection-token *( OWS "," [ OWS Connection-v = *( "," OWS ) connection-token *( OWS "," [ OWS
connection-token ] ) connection-token ] )
Content-Length = "Content-Length:" OWS 1*Content-Length-v Content-Length = "Content-Length:" OWS 1*Content-Length-v
Content-Length-v = 1*DIGIT Content-Length-v = 1*DIGIT
skipping to change at page 78, line 24 skipping to change at page 78, line 28
; general-header defined but not used ; general-header defined but not used
; http-URI defined but not used ; http-URI defined but not used
; https-URI defined but not used ; https-URI defined but not used
; partial-URI defined but not used ; partial-URI defined but not used
; request-header defined but not used ; request-header defined but not used
; response-header defined but not used ; response-header defined but not used
; special defined but not used ; special defined but not used
Appendix D. Change Log (to be removed by RFC Editor before publication) Appendix D. Change Log (to be removed by RFC Editor before publication)
D.1. Since RFC2616 D.1. Since RFC 2616
Extracted relevant partitions from [RFC2616]. Extracted relevant partitions from [RFC2616].
D.2. Since draft-ietf-httpbis-p1-messaging-00 D.2. Since draft-ietf-httpbis-p1-messaging-00
Closed issues: Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/1>: "HTTP Version o <http://tools.ietf.org/wg/httpbis/trac/ticket/1>: "HTTP Version
should be case sensitive" should be case sensitive"
(<http://purl.org/NET/http-errata#verscase>) (<http://purl.org/NET/http-errata#verscase>)
skipping to change at page 80, line 42 skipping to change at page 80, line 43
"host) -- these will have to be updated when switching over to "host) -- these will have to be updated when switching over to
RFC3986. RFC3986.
o Synchronize core rules with RFC5234. o Synchronize core rules with RFC5234.
o Get rid of prose rules that span multiple lines. o Get rid of prose rules that span multiple lines.
o Get rid of unused rules LOALPHA and UPALPHA. o Get rid of unused rules LOALPHA and UPALPHA.
o Move "Product Tokens" section (back) into Part 1, as "token" is o Move "Product Tokens" section (back) into Part 1, as "token" is
used in the definition of the Upgrade header. used in the definition of the Upgrade header field.
o Add explicit references to BNF syntax and rules imported from o Add explicit references to BNF syntax and rules imported from
other parts of the specification. other parts of the specification.
o Rewrite prose rule "token" in terms of "tchar", rewrite prose rule o Rewrite prose rule "token" in terms of "tchar", rewrite prose rule
"TEXT". "TEXT".
D.4. Since draft-ietf-httpbis-p1-messaging-02 D.4. Since draft-ietf-httpbis-p1-messaging-02
Closed issues: Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/51>: "HTTP-date vs. o <http://tools.ietf.org/wg/httpbis/trac/ticket/51>: "HTTP-date vs.
rfc1123-date" rfc1123-date"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/64>: "WS in quoted- o <http://tools.ietf.org/wg/httpbis/trac/ticket/64>: "WS in quoted-
pair" pair"
Ongoing work on IANA Message Header Registration Ongoing work on IANA Message Header Field Registration
(<http://tools.ietf.org/wg/httpbis/trac/ticket/40>): (<http://tools.ietf.org/wg/httpbis/trac/ticket/40>):
o Reference RFC 3984, and update header registrations for headers o Reference RFC 3984, and update header field registrations for
defined in this document. headers defined in this document.
Ongoing work on ABNF conversion Ongoing work on ABNF conversion
(<http://tools.ietf.org/wg/httpbis/trac/ticket/36>): (<http://tools.ietf.org/wg/httpbis/trac/ticket/36>):
o Replace string literals when the string really is case-sensitive o Replace string literals when the string really is case-sensitive
(HTTP-Version). (HTTP-Version).
D.5. Since draft-ietf-httpbis-p1-messaging-03 D.5. Since draft-ietf-httpbis-p1-messaging-03
Closed issues: Closed issues:
skipping to change at page 82, line 34 skipping to change at page 82, line 34
o Use "/" instead of "|" for alternatives. o Use "/" instead of "|" for alternatives.
o Get rid of RFC822 dependency; use RFC5234 plus extensions instead. o Get rid of RFC822 dependency; use RFC5234 plus extensions instead.
o Only reference RFC 5234's core rules. o Only reference RFC 5234's core rules.
o Introduce new ABNF rules for "bad" whitespace ("BWS"), optional o Introduce new ABNF rules for "bad" whitespace ("BWS"), optional
whitespace ("OWS") and required whitespace ("RWS"). whitespace ("OWS") and required whitespace ("RWS").
o Rewrite ABNFs to spell out whitespace rules, factor out header o Rewrite ABNFs to spell out whitespace rules, factor out header
value format definitions. field value format definitions.
D.7. Since draft-ietf-httpbis-p1-messaging-05 D.7. Since draft-ietf-httpbis-p1-messaging-05
Closed issues: Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/30>: "Header LWS" o <http://tools.ietf.org/wg/httpbis/trac/ticket/30>: "Header LWS"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/52>: "Sort 1.3 o <http://tools.ietf.org/wg/httpbis/trac/ticket/52>: "Sort 1.3
Terminology" Terminology"
skipping to change at page 83, line 30 skipping to change at page 83, line 30
o Rewrite definition of list rules, deprecate empty list elements. o Rewrite definition of list rules, deprecate empty list elements.
o Add appendix containing collected and expanded ABNF. o Add appendix containing collected and expanded ABNF.
Other changes: Other changes:
o Rewrite introduction; add mostly new Architecture Section. o Rewrite introduction; add mostly new Architecture Section.
o Move definition of quality values from Part 3 into Part 1; make TE o Move definition of quality values from Part 3 into Part 1; make TE
request header grammar independent of accept-params (defined in request header field grammar independent of accept-params (defined
Part 3). in Part 3).
D.8. Since draft-ietf-httpbis-p1-messaging-06 D.8. Since draft-ietf-httpbis-p1-messaging-06
Closed issues: Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/161>: "base for o <http://tools.ietf.org/wg/httpbis/trac/ticket/161>: "base for
numeric protocol elements" numeric protocol elements"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/162>: "comment ABNF" o <http://tools.ietf.org/wg/httpbis/trac/ticket/162>: "comment ABNF"
skipping to change at page 86, line 10 skipping to change at page 86, line 10
entity / representation / variant terminology" entity / representation / variant terminology"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/220>: "consider o <http://tools.ietf.org/wg/httpbis/trac/ticket/220>: "consider
removing the 'changes from 2068' sections" removing the 'changes from 2068' sections"
Partly resolved issues: Partly resolved issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/159>: "HTTP(s) URI o <http://tools.ietf.org/wg/httpbis/trac/ticket/159>: "HTTP(s) URI
scheme definitions" scheme definitions"
D.13. Since draft-ietf-httpbis-p1-messaging-11
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/193>: "Trailer
requirements"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/204>: "Text about
clock requirement for caches belongs in p6"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/221>: "effective
request URI: handling of missing host in HTTP/1.0"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/248>: "confusing
Date requirements for clients"
Partly resolved issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/95>: "Handling
multiple Content-Length headers"
Index Index
A A
absolute-URI form (of request-target) 27
application/http Media Type 61 application/http Media Type 61
asterisk form (of request-target) 27
authority form (of request-target) 27
B B
browser 10 browser 10
C C
cache 13 cache 13
cacheable 14 cacheable 14
chunked (Coding Format) 35 chunked (Coding Format) 35
client 10 client 10
Coding Format Coding Format
skipping to change at page 90, line 6 skipping to change at page 90, line 29
application/http 61 application/http 61
message/http 59 message/http 59
message 11 message 11
message/http Media Type 59 message/http Media Type 59
O O
origin server 10 origin server 10
outbound 12 outbound 12
P P
path-absolute form (of request-target) 27
proxy 12 proxy 12
R R
request 11 request 11
resource 16 resource 16
response 11 response 11
reverse proxy 13 reverse proxy 13
S S
server 10 server 10
 End of changes. 75 change blocks. 
141 lines changed or deleted 168 lines changed or added

This html diff was produced by rfcdiff 1.40. The latest version is available from http://tools.ietf.org/tools/rfcdiff/