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 RequiredSo sendest du ihn
| Node.js / Express | res.status(426).end() |
|---|---|
| Python / Flask | return '', 426 |
| nginx | return 426; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/