426 Upgrade Required

Klient musi przełączyć się na inny protokół.

Kiedy go używać

Wymuszenie nowszej wersji TLS lub HTTP.

Typowe przyczyny i rozwiązania

426 oznacza, że serwer nie obsłuży żądania w bieżącym protokole i wymienia akceptowane protokoły w nagłówku Upgrade. Najczęściej zobaczysz go z endpointu WebSocket otwartego zwykłym żądaniem HTTP, w karcie przeglądarki lub przez curl: serwer oczekiwał Upgrade: websocket. Zdarza się też, gdy reverse proxy gubi nagłówki Upgrade i Connection w drodze do serwera WebSocket.

To nie jest właściwe narzędzie do przenoszenia odwiedzających z HTTP na HTTPS: przeglądarki nie przejdą same na HTTPS po 426, więc użyj przekierowania 301 lub 308 i HSTS. Niektóre API używają 426, by wymusić aktualizację przestarzałych wersji aplikacji mobilnych, z komunikatem w treści. Jeśli winne jest proxy, nginx potrzebuje proxy_http_version 1.1 i przekazania obu nagłówków.

Błąd klienta (4xx)

Kody 4xx to błędy klienta: samo żądanie jest błędne, nieautoryzowane albo wskazuje na coś, czego nie ma. Ponowienie tego samego żądania nic nie da.

Jak to wygląda

HTTP/1.1 426 Upgrade Required

Jak go wysłać

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

Jak go sprawdzić

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

Otwórz narzędzie Kody statusu HTTP