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 ProtocolsJak go sprawdzić
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/