HTTPQUERY
Deutsch

426 Upgrade Required

Verwendung

Wird der Statuscode 426 Upgrade Required empfangen, enthält die Antwort ein Upgrade-Antwortheaderfeld, das das oder die erforderlichen Protokolle angibt.

Diese Meldung steht im Zusammenhang mit der Meldung 101 Switching Protocols, die als Antwort auf eine Protokoll-Upgrade-Anfrage des Clients mittels des Upgrade-Headers gesendet wird.

SEO-Auswirkung

Suchmaschinen wie Google indexieren keine URL, die mit dem Status 426 antwortet. Zuvor indexierte URLs, die diesen Statuscode zurückgeben, werden aus den Suchergebnissen entfernt.

Beispiel

Der Client fordert eine Ressource über unverschlüsseltes HTTP an, und der Server antwortet mit 426 Upgrade Required, weil TLS zwingend erforderlich ist. Der Client wechselt zu HTTPS, und die Anfrage ist erfolgreich.

HTTP/2 und HTTP/3

HTTP/2 und HTTP/3 werden während des TLS-Handshakes über ALPN ausgehandelt, nicht über den Upgrade-Header. Der Upgrade-Mechanismus für unverschlüsseltes HTTP/2 (h2c) wurde aus der Spezifikation entfernt. Der Upgrade-Header gilt für Protokollwechsel wie TLS und WebSocket.

Erste Anfrage

GET /tech-news HTTP/1.1
Host: example.com

Erste Antwort

HTTP/1.1 426 Upgrade Required
Upgrade: TLS/1.2
Connection: upgrade
Content-Type: text/html
Content-Length: 140

<html>
  <head>
    <title>TLS Required</title>
  </head>
  <body>
   <p>This service requires TLS.</p>
  </body>
</html>

Nachfolgende Anfrage über HTTPS

GET /tech-news HTTP/1.1
Host: example.com

Antwort

HTTP/1.1 200 OK
Content-Type: text/html

Behebung

Lesen Sie den Upgrade-Header in der Antwort, um das erforderliche Protokoll zu ermitteln. Der Server listet ein oder mehrere akzeptable Protokolle auf, etwa TLS/1.2, HTTP/2, HTTP/3 oder websocket.

Wechseln Sie bei Protokollversions-Upgrades den Client auf das angegebene Protokoll und senden Sie die Anfrage erneut. HTTP/2 und HTTP/3 nutzen ALPN während des TLS-Handshakes statt des Upgrade-Headers. Bei anderen Protokollen wie WebSocket senden Sie Connection: upgrade zusammen mit dem passenden Upgrade-Header. Der Server antwortet mit 101 Switching Protocols, und die Verbindung wird unter dem neuen Protokoll fortgeführt.

Konfigurieren Sie bei WebSocket-Verbindungen über nginx den Proxy so, dass er die upgrade-Header weiterleitet:

Ohne diese Direktiven verwendet nginx für Upstream-Verbindungen standardmäßig HTTP/1.0 und entfernt die upgrade-Header, was bei jedem WebSocket-Handshake-Versuch ein 426 erzeugt.

Wenn ein Server HTTPS erzwingt, ändern Sie das Schema der Anfrage-URL von http:// zu https://. Stellen Sie sicher, dass im Client oder in der Laufzeitumgebung TLS 1.2 oder TLS 1.3 aktiviert ist. Ältere TLS-Versionen werden üblicherweise abgelehnt.

Aktualisieren Sie Client-Bibliotheken und SDKs, wenn diese das erforderliche Protokoll nicht unterstützen. Veraltete HTTP-Bibliotheken verwenden standardmäßig HTTP/1.1 und besitzen keine Fähigkeit zur Aushandlung von HTTP/2 oder HTTP/3.

Entfernen Sie überflüssige Upgrade-Header aus Anfragen, die nicht für einen Protokollwechsel gedacht sind. Manche Proxys deuten einen verirrten Upgrade-Header als Versuch einer Protokollaushandlung und geben 426 zurück.

Code-Referenzen

.NET

HttpStatusCode.UpgradeRequired

Rust

http::StatusCode::UPGRADE_REQUIRED

Rails

:upgrade_required

Go

http.StatusUpgradeRequired

Symfony

Response::HTTP_UPGRADE_REQUIRED

Python3.5+

http.HTTPStatus.UPGRADE_REQUIRED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_UPGRADE_REQUIRED

Angular

@angular/common/http/HttpStatusCode.UpgradeRequired