426 Upgrade Required
426 Upgrade Required status code is used when a server wants to
tell a client that they should be using a newer version or different protocol
to talk to the server.
HTTP/1.1 426 Upgrade Required Upgrade: HTTP/3 Connection: Upgrade To use this service, you must use HTTP version 3.
When a HTTP connection is switched to another protocol (such as Websocket),
typically this is done via the
Upgrade header in the request, and the server
responding with 101 Switching Protocols. This is true for initiating a
Websocket connection and for switching a (non-TLS) HTTP/1 to HTTP/2 connection.
426 status code could be used by a server to force this protocol switch,
however, I haven’t seen any examples personally of servers doing this.
I can imagine that during the upgrade from HTTP/1.0 to HTTP/1.1 this could have been useful and thus this feature may have been added to prepare for situations where servers want to enforce a client to use a newer version.
I believe this is also used by people who are forcing a switch from HTTP to HTTPS without an automated redirect.
I’m not aware if there are clients that can switch protocols or protocol versions automatically, and I don’t know if browsers support this out of the box. My guess is no, but I don’t have a source for this.
- RFC7231, Section 6.5.15 - 426 Upgrade Required