426 Upgrade Required

Der Client muss zu einem anderen Protokoll wechseln.

Wann du ihn verwendest

Erzwingt eine neuere TLS- oder HTTP-Version.

Häufige Ursachen und Lösungen

426 bedeutet, dass der Server die Anfrage über das aktuelle Protokoll nicht bedient und die akzeptierten Protokolle in einem Upgrade-Header auflistet. Meist siehst du ihn von einem WebSocket-Endpunkt, der mit einer normalen HTTP-Anfrage geöffnet wurde, im Browser-Tab oder mit curl: Der Server hat Upgrade: websocket erwartet. Er tritt auch auf, wenn ein Reverse Proxy die Header Upgrade und Connection auf dem Weg zu einem WebSocket-Server verwirft.

Für die Umleitung von Besuchern von HTTP auf HTTPS ist 426 das falsche Werkzeug: Browser wechseln nach einer 426 nicht von selbst, also nimm eine 301- oder 308-Weiterleitung plus HSTS. Manche APIs nutzen 426, um veraltete Versionen mobiler Apps zum Update zu zwingen, mit einer Nachricht im Body. Ist ein Proxy schuld, braucht nginx proxy_http_version 1.1 und muss beide Header weiterleiten.

Client-Fehler (4xx)

4xx-Codes sind Client-Fehler: Die Anfrage selbst ist fehlerhaft, nicht autorisiert oder verweist auf etwas, das es nicht gibt. Dieselbe Anfrage erneut zu senden hilft nicht.

So sieht es aus

HTTP/1.1 426 Upgrade Required

So sendest du ihn

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

So prüfst du ihn

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

HTTP-Statuscodes öffnen