Network Working Group J. C. Mogul
Request for Comments: 2145 DEC
Category: Informational R. Fielding
UC Irvine
J. Gettys
DEC
H. Frystyk
MIT/LCS
May 1997
Use and Interpretation of HTTP Version Numbers
Mogul, et. al. Informational [Page 1]
RFC 2145 HTTP Version Numbers May 1997
TABLE OF CONTENTS
1 Introduction
HTTP request and response messages include an HTTP protocol version number. According to section 3.1 of the HTTP/1.1 specification [2],
Mogul, et. al. Informational [Page 2]
RFC 2145 HTTP Version Numbers May 1997
The specification described in this document is not part of the specification of any individual version of HTTP, such as HTTP/1.0 or HTTP/1.1. Rather, this document describes the use of HTTP version numbers in any version of HTTP (except for HTTP/0.9, which did not include version numbers).
1.1 Robustness Principle
RFC791 [4] defines the "robustness principle" in section 3.2:
2 HTTP version numbers
We start by restating the language quoted above from section 3.1 of the HTTP/1.1 specification [2]:
Mogul, et. al. Informational [Page 3]
RFC 2145 HTTP Version Numbers May 1997
Note: In a future version of HTTP, we may introduce a mechanism that explicitly requires a receiving implementation to reject a message if it does not understand certain headers. For example, this might be implemented by means of a header that lists a set of other message headers that must be understood by the recipient. Any implementation claiming at least conditional compliance with this future version of HTTP would have to implement this mechanism. However, no implementation claiming compliance with a lower HTTP version (in particular, HTTP/1.1) will have to implement this mechanism.
2.1 Proxy behavior
A proxy MUST forward an unknown header, unless it is protected by a Connection header. A proxy implementing an HTTP version >= 1.1 MUST NOT forward unknown headers that are protected by a Connection header, as described in section 14.10 of the HTTP/1.1 specification [2].
2.2 Compatibility between minor versions of the same major version
An implementation of HTTP/x.b sending a message to a recipient whose version is known to be HTTP/x.a, a < b, MAY send a header that is not defined in the specification for HTTP/x.a. For example, an HTTP/1.1 server may send a "Cache-control" header to an HTTP/1.0 client; this may be useful if the immediate recipient is an HTTP/1.0 proxy, but the ultimate recipient is an HTTP/1.1 client. An implementation of HTTP/x.b sending a message to a recipient whose version is known to be HTTP/x.a, a < b, MUST NOT depend on the recipient understanding a header not defined in the specification for HTTP/x.a. For example, HTTP/1.0 clients cannot be expected to understand chunked encodings, and so an HTTP/1.1 server must never send "Transfer-Encoding: chunked" in response to an HTTP/1.0 request.
Mogul, et. al. Informational [Page 4]
RFC 2145 HTTP Version Numbers May 1997 2.3 Which version number to send in a messageThe most strenuous debate over the use of HTTP version numbers has centered on the problem of implementations that do not follow the robustness principle, and which fail to produce useful results when they receive a message with an HTTP minor version higher than the minor version they implement. We consider these implementations buggy, but we recognize that the robustness principle also implies that message senders should make concessions to buggy implementations when this is truly necessary for interoperation.
Mogul, et. al. Informational [Page 5]
RFC 2145 HTTP Version Numbers May 1997 3 Security ConsiderationsNone, except to the extent that security mechanisms introduced in one version of HTTP might depend on the proper interpretation of HTTP version numbers in older implementations.
4 References
1. Berners-Lee, T., R. Fielding, and H. Frystyk. Hypertext Transfer Protocol -- HTTP/1.0. RFC 1945, HTTP Working Group, May, 1996.
5 Authors' addresses
Jeffrey C. Mogul Western Research Laboratory Digital Equipment Corporation 250 University Avenue Palo Alto, California, 94305, USA Email: mogul@wrl.dec.com
Mogul, et. al. Informational [Page 6]
RFC 2145 HTTP Version Numbers May 1997
Mogul, et. al. Informational [Page 7]