HTTP Status 101 - Switching Protocols

Der HTTP-Status-Code 101 Switching Protocols signalisiert, dass der Server dem Client-Request zustimmt, auf ein anderes Protokoll zu wechseln. Nach dieser Response wird die Verbindung auf das neue Protokoll umgestellt, typischerweise für WebSocket-Upgrades.

Typ

Response-Status-Code

Syntax

Der Status Code wird mit Upgrade Header zurückgegeben, um das neue Protokoll anzuzeigen.

http
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade

Direktiven

Der 101 Switching Protocols Status Code wird für Protokoll-Upgrades verwendet.

Upgrade Header
Request muss Upgrade Header enthalten mit gewünschtem Protokoll (websocket, h2c für HTTP/2). Server antwortet mit 101 und gleichem Upgrade Header, wenn Wechsel akzeptiert.
Connection: Upgrade
Beide Seiten müssen Connection: Upgrade Header senden, um Upgrade-Verhandlung durchzuführen. Zeigt an, dass bestehende Connection für neues Protokoll wiederverwendet wird.
WebSocket Handshake
WebSocket-Upgrade erfordert zusätzliche Header (Sec-WebSocket-Key, Sec-WebSocket-Accept) für Sicherheits-Handshake. Nach 101 Response läuft bidirektionale WebSocket-Kommunikation.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für Status 101.

Beispiel 1 WebSocket Upgrade Handshake

http
GET /chat HTTP/1.1
Host: websocket.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

[WebSocket frames ab jetzt]

Beispiel 2 HTTP2 Cleartext Upgrade

http
GET / HTTP/1.1
Host: api.example.com
Connection: Upgrade, HTTP2-Settings
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA

HTTP/1.1 101 Switching Protocols
Connection: Upgrade
Upgrade: h2c

[HTTP/2 frames ab jetzt]

Beispiel 3 Rejected Upgrade mit Fallback

http
GET /realtime HTTP/1.1
Host: api.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: xyz123

HTTP/1.1 200 OK
Content-Type: application/json

{"error": "WebSocket not supported on this endpoint"}

[Bleibt bei HTTP/1.1, kein Protokoll-Wechsel]

WebSocket Upgrade Flow

WebSocket Protocol Upgrade mit 101 Response

Vorteile für die Systemarchitektur

  • Bidirektionale Kommunikation: WebSocket-Upgrade ermöglicht Full-Duplex-Kommunikation über eine einzige TCP-Verbindung, ideal für Chat, Live-Updates, Real-Time-Dashboards
  • Connection Reuse: Upgrade nutzt bestehende HTTP-Connection, vermeidet neue TCP-Handshakes und TLS-Negotiation, reduziert Latenz für Real-Time-Anwendungen
  • Protokoll-Flexibilität: Erlaubt nahtlosen Übergang von HTTP zu spezialisierten Protokollen ohne neue Port-Konfiguration oder Firewall-Anpassungen

Spezifikation

RFC 9110, Section 15.2.2 – HTTP Semantics https://www.rfc-editor.org/rfc/rfc9110.html#name-101-switching-protocols

Weitere Spezifikationen

Upgrade Header, Sec-WebSocket-Key Header