101 Switching Protocols

Serwer przełącza się na protokół, o który prosił klient.

Kiedy go używać

Przełączenie połączenia na WebSocket.

Warto wiedzieć

101 widzisz prawie zawsze podczas handshake'u WebSocket: klient wysyła Upgrade: websocket i Connection: Upgrade, a serwer odpowiada 101 z Sec-WebSocket-Accept. Jeśli zamiast tego dostajesz 200, 400 lub 426, coś po drodze zgubiło nagłówki Upgrade. Za nginx musisz je jawnie przekazać przez proxy_http_version 1.1, proxy_set_header Upgrade $http_upgrade i proxy_set_header Connection upgrade.

Po przełączeniu kolejnym problemem stają się limity bezczynności: nginx zamyka połączenia proxy po proxy_read_timeout, domyślnie 60 sekund, a AWS ALB ma 60-sekundowy idle timeout, więc ciche gniazda potrzebują pingów. HTTP/2 w ogóle nie używa 101; WebSockety przez HTTP/2 korzystają z rozszerzonego CONNECT z RFC 8441. Odpowiedź 101 nie ma treści i nigdy nie jest cache'owana.

Informacyjne (1xx)

Kody 1xx są informacyjne: serwer odebrał żądanie i wymiana trwa dalej. Przeglądarki i biblioteki HTTP obsługują je za Ciebie.

Jak to wygląda

HTTP/1.1 101 Switching Protocols

Jak go sprawdzić

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

Otwórz narzędzie Kody statusu HTTP