DevToolPal
NL
1xx Informatief

101 Switching Protocols

Protocolwissel

Wat het betekent

De server stemt in met overschakelen naar het protocol dat de client in de Upgrade-header vroeg, meestal WebSocket. Na dit antwoord spreekt de verbinding het nieuwe protocol.

Veelvoorkomende oorzaken

  • Een WebSocket-handshake is geslaagd
  • De client vroeg een upgrade naar h2c (onversleuteld HTTP/2)
  • Een upgrade naar een eigen protocol is geaccepteerd

Zo los je het op

Als client of bezoeker

101 betekent succes voor WebSocket. Verwachtte je 101 maar krijg je 200 of 400, controleer dan of de URL naar het WebSocket-endpoint wijst en of proxy's de headers Upgrade en Connection doorsturen.

Als beheerder van de site of API

Achter nginx of een load balancer moet je Upgrade en Connection expliciet doorgeven (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") en idle-time-outs verhogen voor langlevende sockets.

Voorbeeldantwoord

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

Specificatie

RFC 9110 §15.2.2

Veelgestelde vragen

› Waarom geeft mijn WebSocket 400 in plaats van 101?

De handshake-headers ontbraken of zijn gewijzigd, vaak door een proxy die Upgrade/Connection verwijdert, of de Sec-WebSocket-Key of versie is ongeldig.

› Gebruikt HTTP/2 de 101?

Alleen bij de zeldzame onversleutelde h2c-upgrade. Browsers onderhandelen HTTP/2 via TLS-ALPN, en HTTP/2 zelf kent geen 101-antwoord.