DevToolPal
IT
1xx Informativi

101 Switching Protocols

Cambio di protocollo

Cosa significa

Il server accetta di passare al protocollo richiesto dal client nell'header Upgrade, quasi sempre WebSocket. Dopo questa risposta la connessione usa il nuovo protocollo.

Cause comuni

  • Un handshake WebSocket è riuscito
  • Il client ha chiesto un upgrade a h2c (HTTP/2 in chiaro)
  • È stato accettato un upgrade a un protocollo personalizzato

Come risolvere

Lato client o visitatore

Per WebSocket 101 significa successo. Se ti aspettavi 101 e ricevi 200 o 400, verifica che l'URL punti all'endpoint WebSocket e che i proxy inoltrino gli header Upgrade e Connection.

Lato gestore del sito o dell’API

Dietro nginx o un load balancer passa esplicitamente Upgrade e Connection (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") e aumenta i timeout di inattività per i socket di lunga durata.

Risposta di esempio

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

Specifica

RFC 9110 §15.2.2

Domande frequenti

› Perché il mio WebSocket restituisce 400 invece di 101?

Gli header dell'handshake mancavano o sono stati alterati, spesso da un proxy che rimuove Upgrade/Connection, oppure Sec-WebSocket-Key o la versione non sono validi.

› HTTP/2 usa il 101?

Solo per il raro upgrade h2c in chiaro. I browser negoziano HTTP/2 tramite TLS ALPN e HTTP/2 non ha una risposta 101.