RFC 9112 - HTTP - 1.1
RFC 9112 - HTTP - 1.1
Fielding, Editor
Request for Comments: 9112 Adobe
Obsoletes: 7230 M. Nottingham, Editor
STD: 99 Fastly
Category: Standards Track J. Reschke, Editor
ISSN: 2070-1721 greenbytes
June 2022
HTTP/1.1
Abstract
The Hypertext Transfer Protocol (HTTP) is a stateless
application-level protocol for distributed, collaborative,
hypertext information systems. This document specifies the
HTTP/1.1 message syntax, message parsing, connection
management, and related security concerns.
Information about the current status of this document, any errata, and
how to provide feedback on it may be obtained at https://www.rfc-
editor.org/info/rfc9112.
Copyright Notice
Copyright (c) 2022 IETF Trust and the persons identified as the document
authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions
Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect
on the date of publication of this document. Please review these
documents carefully, as they describe your rights and restrictions with
respect to this document. Code Components extracted from this
document must include Revised BSD License text as described in Section
4.e of the Trust Legal Provisions and are provided without warranty as
described in the Revised BSD License.
1. Introduction
1.1. Requirements Notation
1.2. Syntax Notation
2. Message
2.1. Message Format
2.2. Message Parsing
2.3. HTTP Version
3. Request Line
3.1. Method
3.2. Request Target
3.2.1. origin-form
3.2.2. absolute-form
3.2.3. authority-form
3.2.4. asterisk-form
3.3. Reconstructing the Target URI
4. Status Line
5. Field Syntax
5.1. Field Line Parsing
5.2. Obsolete Line Folding
6. Message Body
6.1. Transfer-Encoding
6.2. Content-Length
6.3. Message Body Length
7. Transfer Codings
7.1. Chunked Transfer Coding
7.1.1. Chunk Extensions
7.1.2. Chunked Trailer Section
7.1.3. Decoding Chunked
7.2. Transfer Codings for Compression
7.3. Transfer Coding Registry
7.4. Negotiating Transfer Codings
8. Handling Incomplete Messages
9. Connection Management
9.1. Establishment
9.2. Associating a Response to a Request
9.3. Persistence
9.3.1. Retrying Requests
9.3.2. Pipelining
9.4. Concurrency
9.5. Failures and Timeouts
9.6. Tear-down
9.7. TLS Connection Initiation
9.8. TLS Connection Closure
10. Enclosing Messages as Data
10.1. Media Type message/http
10.2. Media Type application/http
11. Security Considerations
11.1. Response Splitting
11.2. Request Smuggling
11.3. Message Integrity
11.4. Message Confidentiality
12. IANA Considerations
12.1. Field Name Registration
12.2. Media Type Registration
12.3. Transfer Coding Registration
12.4. ALPN Protocol ID Registration
13. References
13.1. Normative References
13.2. Informative References
Appendix A. Collected ABNF
Appendix B. Differences between HTTP and MIME
B.1. MIME-Version
B.2. Conversion to Canonical Form
B.3. Conversion of Date Formats
B.4. Conversion of Content-Encoding
B.5. Conversion of Content-Transfer-Encoding
B.6. MHTML and Line Length Limitations
Appendix C. Changes from Previous RFCs
C.1. Changes from HTTP/0.9
C.2. Changes from HTTP/1.0
C.2.1. Multihomed Web Servers
C.2.2. Keep-Alive Connections
C.2.3. Introduction of Transfer-Encoding
C.3. Changes from RFC 7230
Acknowledgements
Index
Authors' Addresses
1. Introduction
The Hypertext Transfer Protocol (HTTP) is a stateless application-level
request/response protocol that uses extensible semantics and self-
descriptive messages for flexible interaction with network-based
hypertext information systems. HTTP/1.1 is defined by:
• This document
• "HTTP Semantics" [HTTP]
• "HTTP Caching" [CACHING]
This document specifies how HTTP semantics are conveyed using the
HTTP/1.1 message syntax, framing, and connection management
mechanisms. Its goal is to define the complete set of requirements for
HTTP/1.1 message parsers and message-forwarding intermediaries.
It also uses a list extension, defined in Section 5.6.1 of [HTTP], that allows
for compact definition of comma-separated lists using a "#" operator
(similar to how the "*" operator indicates repetition). Appendix A shows
the collected grammar with all list operators expanded to standard ABNF
notation.
2. Message
HTTP/1.1 clients and servers communicate by sending messages. See
Section 3 of [HTTP] for the general terminology and core concepts of
HTTP.
Although the line terminator for the start-line and fields is the sequence
CRLF, a recipient MAY recognize a single LF as a line terminator and
ignore any preceding CR.
A sender MUST NOT send whitespace between the start-line and the first
header field.
A recipient that receives whitespace between the start-line and the first
header field MUST either reject the message as invalid or consume each
whitespace-preceded line without further processing of it (i.e., ignore the
entire line, along with any subsequent lines preceded by whitespace,
until a properly formed header field is received or the header section is
terminated). Rejection or removal of invalid whitespace-preceded lines is
necessary to prevent their misinterpretation by downstream recipients
that might be vulnerable to request smuggling (Section 11.2) or
response splitting (Section 11.1) attacks.
3. Request Line
A request-line begins with a method token, followed by a single space
(SP), the request-target, and another single space (SP), and ends with the
protocol version.
3.1. Method
The method token indicates the request method to be performed on the
target resource. The request method is case-sensitive.
method = token
request-target = origin-form
/ absolute-form
/ authority-form
/ asterisk-form
A client MUST send a Host header field (Section 7.2 of [HTTP]) in all
HTTP/1.1 request messages. If the target URI includes an authority
component, then a client MUST send a field value for Host that is
identical to that authority component, excluding any userinfo
subcomponent and its "@" delimiter (Section 4.2 of [HTTP]). If the
authority component is missing or undefined for the target URI, then a
client MUST send a Host header field with an empty field value.
A server MUST respond with a 400 (Bad Request) status code to any
HTTP/1.1 request message that lacks a Host header field and to any
request message that contains more than one Host header field line or a
Host header field with an invalid field value.
3.2.1. origin-form
The most common form of request-target is the origin-form.
http://www.example.org/where?q=now
directly from the origin server would open (or reuse) a TCP connection to
port 80 of the host "www.example.org" and send the lines:
3.2.2. absolute-form
When making a request to a proxy, other than a CONNECT or server-
wide OPTIONS request (as detailed below), a client MUST send the target
URI in absolute-form as the request-target.
absolute-form = absolute-URI
The proxy is requested to either service that request from a valid cache, if
possible, or make the same request on the client's behalf either to the
next inbound proxy server or directly to the origin server indicated by
the request-target. Requirements on such "forwarding" of messages are
defined in Section 7.6 of [HTTP].
3.2.3. authority-form
The authority-form of request-target is only used for CONNECT requests
(Section 9.3.6 of [HTTP]). It consists of only the uri-host and port number
of the tunnel destination, separated by a colon (":").
3.2.4. asterisk-form
The asterisk-form of request-target is only used for a server-wide
OPTIONS request (Section 9.3.7 of [HTTP]).
asterisk-form = "*"
OPTIONS * HTTP/1.1
OPTIONS * HTTP/1.1
Host: www.example.org:8001
Otherwise, the server reconstructs the target URI from the connection
context and various parts of the request message in order to identify the
target resource (Section 7.1 of [HTTP]):
https://www.example.org/pub/WWW/TheProject.html
OPTIONS * HTTP/1.1
Host: www.example.org:8080
http://www.example.org:8080
If the target URI's authority component is empty and its URI scheme
requires a non-empty authority (as is the case for "http" and "https"), the
server can reject the request or determine whether a configured default
applies that is consistent with the incoming connection's context.
Context might include connection details like address and port, what
security has been applied, and locally defined information specific to that
server's configuration. An empty authority is replaced with the
configured default before further processing of the request.
Note that reconstructing the client's target URI is only half of the process
for identifying a target resource. The other half is determining whether
that target URI identifies a resource for which the server is willing and
able to send a response, as defined in Section 7.4 of [HTTP].
4. Status Line
The first line of a response message is the status-line, consisting of the
protocol version, a space (SP), the status code, and another space and
ending with an OPTIONAL textual phrase describing the status code.
status-code = 3DIGIT
HTTP's core status codes are defined in Section 15 of [HTTP], along with
the classes of status codes, considerations for the definition of new
status codes, and the IANA registry for collecting such definitions.
5. Field Syntax
Each field line consists of a case-insensitive field name followed by a
colon (":"), optional leading whitespace, the field line value, and optional
trailing whitespace.
Rules for parsing within field values are defined in Section 5.5 of [HTTP].
This section covers the generic syntax for header field inclusion within,
and extraction from, HTTP/1.1 messages.
5.1. Field Line Parsing
Messages are parsed using a generic algorithm, independent of the
individual field names. The contents within a given field line value are not
parsed until a later stage of message interpretation (usually after the
message's entire field section has been processed).
No whitespace is allowed between the field name and colon. In the past,
differences in the handling of such whitespace have led to security
vulnerabilities in request routing and response handling. A server MUST
reject, with a response status code of 400 (Bad Request), any received
request message that contains whitespace between a header field name
and colon. A proxy MUST remove any such whitespace from a response
message before forwarding the message downstream.
A sender MUST NOT generate a message that includes line folding (i.e.,
that has any field line value that contains a match to the obs-fold rule)
unless the message is intended for packaging within the "message/http"
media type.
6. Message Body
The message body (if any) of an HTTP/1.1 message is used to carry
content (Section 6.4 of [HTTP]) for the request or response. The message
body is identical to the content unless a transfer coding has been
applied, as described in Section 6.1.
message-body = *OCTET
6.1. Transfer-Encoding
The Transfer-Encoding header field lists the transfer coding names
corresponding to the sequence of transfer codings that have been (or
will be) applied to the content in order to form the message body.
Transfer codings are defined in Section 7.
Transfer-Encoding = #transfer-coding
; defined in [HTTP], Section 10.1.4
For example,
indicates that the content has been compressed using the gzip coding
and then chunked using the chunked coding while forming the message
body.
6.2. Content-Length
When a message does not have a Transfer-Encoding header field, a
Content-Length header field (Section 8.6 of [HTTP]) can provide the
anticipated size, as a decimal number of octets, for potential content. For
messages that do include content, the Content-Length field value
provides the framing information necessary for determining where the
data (and message) ends. For messages that do not include content, the
Content-Length indicates the size of the selected representation (Section
8.6 of [HTTP]).
7. If this is a request message and none of the above are true, then the
message body length is zero (no message body is present).
A server MAY reject a request that contains a message body but not a
Content-Length by responding with 411 (Length Required).
Unless a transfer coding other than chunked has been applied, a client
that sends a request containing a message body SHOULD use a valid
Content-Length header field if the message body length is known in
advance, rather than the chunked transfer coding, since some existing
services respond to chunked with a 411 (Length Required) status code
even though they understand the chunked transfer coding. This is
typically because such services are implemented via a gateway that
requires a content length in advance of being called, and the server is
unable or unwilling to buffer the entire request before processing.
A user agent that sends a request that contains a message body MUST
send either a valid Content-Length header field or use the chunked
transfer coding. A client MUST NOT use the chunked transfer coding
unless it knows the server will handle HTTP/1.1 (or later) requests; such
knowledge can be in the form of specific user configuration or by
remembering the version of a prior received response.
If the final response to the last request on a connection has been
completely received and there remains additional data to read, a user
agent MAY discard the remaining data or attempt to determine if that
data belongs as part of the prior message body, which might be the case
if the prior message's Content-Length value is incorrect. A client MUST
NOT process, cache, or forward such extra data as a separate response,
since such behavior would be vulnerable to cache poisoning.
7. Transfer Codings
Transfer coding names are used to indicate an encoding transformation
that has been, can be, or might need to be applied to a message's
content in order to ensure "safe transport" through the network. This
differs from a content coding in that the transfer coding is a property of
the message rather than a property of the representation that is being
transferred.
chunked-body = *chunk
last-chunk
trailer-section
CRLF
The chunk-size field is a string of hex digits indicating the size of the
chunk-data in octets. The chunked transfer coding is complete when a
chunk with a chunk-size of zero is received, possibly followed by a trailer
section, and finally terminated by an empty line.
HTTP/1.1 does not define any means to limit the size of a chunked
response such that an intermediary can be assured of buffering the
entire response. Additionally, very large chunk sizes may cause overflows
or loss of precision if their values are not represented accurately in a
receiving implementation. Therefore, recipients MUST anticipate
potentially large hexadecimal numerals and prevent parsing errors due
to integer conversion overflows or precision loss due to integer
representation.
The chunked coding does not define any parameters. Their presence
SHOULD be treated as an error.
chunk-ext-name = token
chunk-ext-val = token / quoted-string
length := 0
read chunk-size, chunk-ext (if any), and CRLF
while (chunk-size > 0) {
read chunk-data and CRLF
append chunk-data to content
length := length + chunk-size
read chunk-size, chunk-ext (if any), and CRLF
}
read trailer field
while (trailer field is not empty) {
if (trailer fields are stored/forwarded separately) {
append trailer field to existing trailer fields
}
else if (trailer field is understood and defined as mergeable) {
merge trailer field with existing header fields
}
else {
discard trailer field
}
read trailer field
}
Content-Length := length
Remove "chunked" from Transfer-Encoding
deflate
See Section 8.4.1.2 of [HTTP].
• Name
• Description
• Pointer to specification text
A client MUST NOT send the chunked transfer coding name in TE;
chunked is always acceptable for HTTP/1.1 recipients.
TE: deflate
TE:
TE: trailers, deflate;q=0.5
When multiple transfer codings are acceptable, the client MAY rank the
codings by preference using a case-insensitive "q" parameter (similar to
the qvalues used in content negotiation fields; see Section 12.4.2 of
[HTTP]). The rank value is a real number in the range 0 through 1, where
0.001 is the least preferred and 1 is the most preferred; a value of 0
means "not acceptable".
The keyword "trailers" indicates that the sender will not discard trailer
fields, as described in Section 6.5 of [HTTP].
9. Connection Management
HTTP messaging is independent of the underlying transport- or session-
layer connection protocol(s). HTTP only presumes a reliable transport
with in-order delivery of requests and the corresponding in-order
delivery of responses. The mapping of HTTP request and response
structures onto the data units of an underlying transport protocol is
outside the scope of this specification.
As described in Section 7.3 of [HTTP], the specific connection protocols
to be used for an HTTP interaction are determined by client
configuration and the target URI. For example, the "http" URI scheme
(Section 4.2.1 of [HTTP]) indicates a default connection of TCP over IP,
with a default TCP port of 80, but the client might be configured to use a
proxy via some other connection, port, or protocol.
9.1. Establishment
It is beyond the scope of this specification to describe how connections
are established via various transport- or session-layer protocols. Each
HTTP connection maps to one underlying transport connection.
9.3. Persistence
HTTP/1.1 defaults to the use of persistent connections, allowing multiple
requests and responses to be carried over a single connection. HTTP
implementations SHOULD support persistent connections.
A client that does not support persistent connections MUST send the
"close" connection option in every request message.
A server that does not support persistent connections MUST send the
"close" connection option in every response message that does not have
a 1xx (Informational) status code.
9.3.2. Pipelining
A client that supports persistent connections MAY pipeline its requests
(i.e., send multiple requests without waiting for each response). A server
MAY process a sequence of pipelined requests in parallel if they all have
safe methods (Section 9.2.1 of [HTTP]), but it MUST send the
corresponding responses in the same order that the requests were
received.
9.4. Concurrency
A client ought to limit the number of simultaneous open connections
that it maintains to a given server.
A client or server that wishes to time out SHOULD issue a graceful close
on the connection. Implementations SHOULD constantly monitor open
connections for a received closure signal and respond to it as
appropriate, since prompt closure of both sides of a connection enables
allocated system resources to be reclaimed.
A client, server, or proxy MAY close the transport connection at any time.
For example, a client might have started to send a new request at the
same time that the server has decided to close the "idle" connection.
From the server's point of view, the connection is being closed while it
was idle, but from the client's point of view, a request is in progress.
9.6. Tear-down
The "close" connection option is defined as a signal that the sender will
close this connection after completion of the response. A sender
SHOULD send a Connection header field (Section 7.6.1 of [HTTP])
containing the "close" connection option when it intends to close a
connection. For example,
Connection: close
as a request header field indicates that this is the last request that the
client will send on this connection, while in a response, the same field
indicates that the server is going to close this connection after the
response message is complete.
Note that the field name "Close" is reserved, since using that name as a
header field might conflict with the "close" connection option.
A client that sends a "close" connection option MUST NOT send further
requests on that connection (after the one containing the "close") and
MUST close the connection after reading the final response message
corresponding to this request.
Note that a TCP connection that is half-closed by the client does not
delimit a request message, nor does it imply that the client is no longer
interested in a response. In general, transport signals cannot be relied
upon to signal edge cases, since HTTP/1.1 is independent of transport.
The HTTP client also acts as the TLS client. It initiates a connection to the
server on the appropriate port and sends the TLS ClientHello to begin
the TLS handshake. When the TLS handshake has finished, the client may
then initiate the first HTTP request. All HTTP data MUST be sent as TLS
"application data" but is otherwise treated like a normal connection for
HTTP (including potential reuse as a persistent connection).
An incomplete close does not call into question the security of the data
already received, but it could indicate that subsequent data might have
been truncated. As TLS is not directly aware of HTTP message framing, it
is necessary to examine the HTTP data itself to determine whether
messages are complete. Handling of incomplete messages is defined in
Section 8.
When encountering an incomplete close, a client SHOULD treat as
completed all requests for which it has received either
Clients MUST send a closure alert before closing the connection. Clients
that do not expect to receive any more data MAY choose not to wait for
the server's closure alert and simply close the connection, thus
generating an incomplete close on the server side.
Table 1
Table 2
Note: the coding name "trailers" is reserved because its use would
conflict with the keyword "trailers" in the TE header field (Section 10.1.4
of [HTTP]).
Table 3
13. References
13.1. Normative References
[CACHING] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed.,
“HTTP Caching”, STD 98, RFC 9111, DOI 10.17487/RFC9111, June 2022.
[HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, Ed.,
“HTTP Semantics”, STD 97, RFC 9110, DOI 10.17487/RFC9110, June
2022.
[Linhart] Linhart, C., Klein, A., Heled, R., and S. Orrin, “HTTP Request
Smuggling”, June 2005, <https://www.cgisecurity.com/lib/HTTP-
Request-Smuggling.pdf>.
[RFC2068] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., and T.
Berners-Lee, “Hypertext Transfer Protocol -- HTTP/1.1”, RFC 2068, DOI
10.17487/RFC2068, January 1997, <https://www.rfc-editor.org/info/
rfc2068>.
message-body = *OCTET
method = token
This appendix describes specific areas where HTTP differs from MIME.
Proxies and gateways to and from strict MIME environments need to be
aware of these differences and provide the appropriate conversions
where necessary.
B.1. MIME-Version
HTTP is not a MIME-compliant protocol. However, messages can include
a single MIME-Version header field to indicate what version of the MIME
protocol was used to construct the message. Use of the MIME-Version
header field indicates that the message is in full conformance with the
MIME protocol (as defined in [RFC2045]). Senders are responsible for
ensuring full conformance (where possible) when exporting HTTP
messages to strict MIME environments.
In the ABNF for chunked extensions, (bad) whitespace around ";" and "="
has been reintroduced. Whitespace was removed in [RFC7230], but that
change was found to break existing implementations. (Section 7.1.1)
Acknowledgements
See Appendix "Acknowledgements" of [HTTP], which applies to this
document as well.
Index
ACDFGHKLMORTUWX
•A
◦ absolute-form (of request-target) 3.2.2
◦ application/http Media Type 10.2
◦ asterisk-form (of request-target) 3.2.4
◦ authority-form (of request-target) 3.2.3
•C
◦ CACHING 1, 8, 13.1
▪ Section 3.3 8
◦ chunked (Coding Format) 6.1, 6.3
◦ chunked (transfer coding) 7.1
◦ close 9.3, 9.3, 9.3.2, 9.6, 12.1
◦ compress (transfer coding) 7.2
◦ Connection header field 9.3, 9.3.2, 9.6, 12.1
◦ Content-Length header field 6.2
◦ Content-Transfer-Encoding header field B.5
•D
◦ deflate (transfer coding) 7.2
•F
◦ Fields
▪ Close 9.6
▪ MIME-Version 12.1, B.1
▪ Transfer-Encoding 6, 6.1, 7, 12.1, C.2.3, C.3
•G
◦ Grammar
▪ absolute-form 3.2, 3.2.2
▪ ALPHA 1.2
▪ asterisk-form 3.2, 3.2.4
▪ authority-form 3.2, 3.2.3
▪ chunk 7.1
▪ chunk-data 7.1
▪ chunk-ext 7.1, 7.1.1
▪ chunk-ext-name 7.1.1
▪ chunk-ext-val 7.1.1
▪ chunk-size 7.1
▪ chunked-body 7.1
▪ CR 1.2
▪ CRLF 1.2
▪ CTL 1.2
▪ DIGIT 1.2
▪ DQUOTE 1.2
▪ field-line 5, 7.1.2
▪ field-name 5
▪ field-value 5
▪ HEXDIG 1.2
▪ HTAB 1.2
▪ HTTP-message 2.1
▪ HTTP-name 2.3
▪ HTTP-version 2.3
▪ last-chunk 7.1
▪ LF 1.2
▪ message-body 6
▪ method 3.1
▪ obs-fold 5.2
▪ OCTET 1.2
▪ origin-form 3.2, 3.2.1
▪ reason-phrase 4
▪ request-line 3
▪ request-target 3.2
▪ SP 1.2
▪ start-line 2.1
▪ status-code 4
▪ status-line 4
▪ trailer-section 7.1, 7.1.2
▪ Transfer-Encoding 6.1
▪ VCHAR 1.2
◦ gzip (transfer coding) 7.2
•H
◦ Header Fields
▪ MIME-Version 12.1, B.1
▪ Transfer-Encoding 6, 6.1, 7, 12.1, C.2.3, C.3
◦ header line 2.1
◦ header section 2.1
◦ headers 2.1
◦ HTTP 1, 1, 1.1, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 1.2,
2, 2.3, 3, 3, 3.1, 3.2, 3.2, 3.2.1, 3.2.2, 3.2.3, 3.2.4, 3.3, 3.3, 4, 5, 6, 6,
6.1, 6.1, 6.1, 6.1, 6.2, 6.2, 6.3, 7, 7.1.2, 7.2, 7.2, 7.2, 7.3, 7.3, 7.4,
7.4, 7.4, 7.4, 9, 9, 9.2, 9.3, 9.3.1, 9.3.2, 9.3.2, 9.6, 11, 11.4, 12.1,
12.3, 13.1, A, A, A, A, A, A, A, A, A, A, A, B.3, B.6, C.2.1, C.3,
"Acknowledgements"
▪ Section 4.1 A
▪ Section 5.1 A
▪ Section 5.5 A
▪ Section 5.6.2 A
▪ Section 5.6.3 A, A, A
▪ Section 5.6.4 A, A
▪ Section 10.1.4 A
▪ Section 2 1.1
▪ Section 2.3 3
▪ Section 2.5 2.3
▪ Section 3 2
▪ Section 4.1 1.2
▪ Section 4.2 3.2
▪ Section 4.2.1 9
▪ Section 4.2.2 11.4
▪ Section 5.1 1.2
▪ Section 5.5 1.2, 5
▪ Section 5.6.1 1.2, 6.3, A
▪ Section 5.6.2 1.2
▪ Section 5.6.3 1.2, 1.2, 1.2
▪ Section 5.6.4 1.2, 1.2
▪ Section 5.6.7 B.3
▪ Section 6.4 6
▪ Section 6.4.1 6
▪ Section 6.5 7.1.2, 7.4
▪ Section 7.1 3.3
▪ Section 7.2 3.2, 3.2.1, C.2.1
▪ Section 7.3 9
▪ Section 7.4 3.3
▪ Section 7.6 3.2.2
▪ Section 7.6.1 7.4, 9.3, 9.6
▪ Section 8.4.1 6.1, 7.3
▪ Section 8.4.1.1 7.2
▪ Section 8.4.1.2 7.2
▪ Section 8.4.1.3 7.2
▪ Section 8.6 6.2, 6.2
▪ Section 9 3.1
▪ Section 9.2.1 9.3.2
▪ Section 9.2.2 9.3.1, 9.3.2
▪ Section 9.3.6 3.2.3, 6.1
▪ Section 9.3.7 3.2.4
▪ Section 10.1.4 1.2, 6.1, 7, 7.3, 7.4, 12.3
▪ Section 12.4.2 7.4
▪ Section 14.6 B.6
▪ Section 15 4
▪ Section 15.2 9.2
▪ Section 15.4.5 6.1
▪ Section 15.5.15 3
▪ Section 18.4 12.1
▪ Acknowledgements "Acknowledgements"
◦ HTTP/1.0 2.3, 13.2
•K
◦ Klein 11.1, 13.2
•L
◦ Linhart 11.2, 13.2
•M
◦ Media Type
▪ application/http 10.2
▪ message/http 10.1
◦ message/http Media Type 10.1
◦ method 3.1
◦ MIME-Version header field 12.1, B.1
•O
◦ origin-form (of request-target) 3.2.1
•R
◦ request-target 3.2
◦ RFC1950 12.3, 13.1
◦ RFC1951 12.3, 13.1
◦ RFC1952 12.3, 13.1
◦ RFC2045 2.1, 6.1, 13.2, B, B.1
▪ Section 6 6.1
◦ RFC2046 13.2, B.2
◦ RFC2049 13.2, B.2
▪ Section 4 B.2
◦ RFC2068 13.2, C.2.2
▪ Section 19.7.1 C.2.2
◦ RFC2119 1.1, 13.1
◦ RFC2557 13.2, B.6
◦ RFC5234 1.2, 1.2, 13.1
▪ Appendix B.1 1.2
◦ RFC5322 2.1, 13.2, B
◦ RFC7230 1, 1, 13.2, C.3
◦ RFC7405 1.2, 13.1
◦ RFC8126 7.3, 13.2
▪ Section 4.8 7.3
◦ RFC8174 1.1, 13.1
•T
◦ TLS13 9.7, 9.8, 13.1
◦ Transfer-Encoding header field 6, 6.1, 7, 12.1, C.2.3, C.3
•U
◦ URI 1.2, 1.2, 1.2, 1.2, 1.2, 1.2, 13.1, A, A, A, A, A
▪ Section 3.2 1.2, A
▪ Section 3.2.2 1.2, A
▪ Section 3.2.3 1.2, A
▪ Section 3.4 1.2, A
▪ Section 4.3 1.2, A
◦ USASCII 1.2, 2.2, 13.1
•W
◦ Welch 12.3, 13.1
•X
◦ x-compress (transfer coding) 7.2
◦ x-gzip (transfer coding) 7.2
Authors' Addresses
Roy T. Fielding (editor)
Adobe
345 Park Ave
San Jose, CA 95110
United States of America
Email: fielding@gbiv.com
URI: https://roy.gbiv.com/