The HTTP 1.1 (only)
Upgrade header can be used to upgrade an already established client/server connection to a different protocol (over the same transport protocol). For example, it can be used by a client to upgrade a connection from HTTP 1.1 to HTTP 2.0, or an HTTP or HTTPS connection into a WebSocket.
HTTP/2 explicitly disallows the use of this mechanism/header; it is specific to HTTP/1.1.
Upgrade header field may be used by clients to invite a server to switch to one (or more) of the listed protocols, in descending preference order.
For example, the client might send a
GET request as shown, listing the preferred protocols to switch to (in this case "example/1" and "foo/2"):
GET /index.html HTTP/1.1 Host: www.example.com Connection: upgrade Upgrade: example/1, foo/2
Connection: upgrade must be set whenever
Upgrade is sent.
The server can choose to ignore the request, for any reason, in which case it should just respond as though the
Upgrade header had not been sent (for example, with a
If the server decides to upgrade the connection, it must:
101 Switching Protocolsresponse status with an
Upgradeheader that specifies the protocol(s) being switched to. For example:
HTTP/1.1 101 Switching Protocols Upgrade: foo/2 Connection: Upgrade
A server may also send the header as part of a
Upgrade Required response, to indicate that the server won't perform the request using the current protocol, but might do so if the protocol is changed. The client can then request a protocol change using the process above.
More detail and examples are provided in the topic Protocol upgrade mechanism.
Connection: upgrade Upgrade: protocol_name[/protocol_version]
Connectionheader with type
upgrademust always be sent with the
Upgradeheader (as shown above).
Connection: upgrade Upgrade: a_protocol/1, example ,another_protocol/2.2
Connection: upgrade Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Connection: Upgrade Upgrade: websocket
|RFC 7230, section 6.7: Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing||IETF RFC|
|RFC 7231, section 6.5.15: 426 Upgrade Required||IETF RFC|
|RFC 7540, section 8.1.1: Hypertext Transfer Protocol Version 2 (HTTP/2)||IETF RFC|
No compatibility data found. Please contribute data for "http.headers.Upgrade" (depth: 1) to the MDN compatibility data repository.
© 2005–2020 Mozilla and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.