426 Upgrade Required – Evert Pot

Home Dev 426 Upgrade Required – Evert Pot

The 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.

The 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.


Leave a Reply

Your email address will not be published.