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 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Specificatie
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.