426 Upgrade Required

El cliente debe cambiar a otro protocolo.

Cuándo usarlo

Para forzar una versión más reciente de TLS o HTTP.

Causas habituales y soluciones

426 significa que el servidor no atenderá la solicitud con el protocolo actual y enumera los aceptables en una cabecera Upgrade. Lo más habitual es verlo en un endpoint WebSocket abierto con una solicitud HTTP normal, en una pestaña del navegador o con curl: el servidor esperaba Upgrade: websocket. También ocurre cuando un proxy inverso elimina las cabeceras Upgrade y Connection de camino a un servidor WebSocket.

No es la herramienta adecuada para llevar a los visitantes de HTTP a HTTPS: los navegadores no cambian de protocolo por su cuenta tras un 426, así que usa una redirección 301 o 308 junto con HSTS. Algunas API usan 426 para obligar a actualizar versiones antiguas de apps móviles, con un mensaje en el cuerpo. Si el culpable es un proxy, nginx necesita proxy_http_version 1.1 y reenviar ambas cabeceras.

Error del cliente (4xx)

Los códigos 4xx son errores del cliente: la solicitud en sí es incorrecta, no está autorizada o apunta a algo que no existe. Repetir la misma solicitud no servirá de nada.

Cómo se ve

HTTP/1.1 426 Upgrade Required

Cómo enviarlo

Node.js / Expressres.status(426).end()
Python / Flaskreturn '', 426
nginxreturn 426;

Cómo comprobarlo

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Abrir Códigos de estado HTTP