DevToolPal
PL
1xx Informacyjne

101 Switching Protocols

Zmiana protokołu

Co to znaczy

Serwer zgadza się przełączyć na protokół, o który klient poprosił w nagłówku Upgrade, najczęściej WebSocket. Po tej odpowiedzi połączenie używa nowego protokołu.

Typowe przyczyny

  • Uzgadnianie WebSocket powiodło się
  • Klient poprosił o przejście na h2c (HTTP/2 bez szyfrowania)
  • Zaakceptowano niestandardową zmianę protokołu

Jak naprawić

Jako klient lub odwiedzający

Dla WebSocket 101 oznacza sukces. Jeśli spodziewałeś się 101, a dostałeś 200 lub 400, sprawdź, czy URL wskazuje na endpoint WebSocket i czy proxy przekazują nagłówki Upgrade i Connection.

Jako właściciel strony lub API

Za nginx lub load balancerem przekazuj Upgrade i Connection jawnie (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") i zwiększ limity bezczynności dla długich połączeń.

Przykładowa odpowiedź

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

Specyfikacja

RFC 9110 §15.2.2

FAQ

› Dlaczego mój WebSocket zwraca 400 zamiast 101?

Brakowało nagłówków uzgadniania albo zostały zmienione, często przez proxy usuwające Upgrade/Connection, albo Sec-WebSocket-Key lub wersja są nieprawidłowe.

› Czy HTTP/2 używa 101?

Tylko przy rzadkim przejściu h2c bez szyfrowania. Przeglądarki negocjują HTTP/2 przez TLS ALPN, a samo HTTP/2 nie ma odpowiedzi 101.