Le serveur passe au protocole demandé par le client.
Quand l’utiliser
Passage d’une connexion à WebSocket.
Bon à savoir
Vous voyez presque toujours 101 lors d’un handshake WebSocket : le client envoie Upgrade: websocket et Connection: Upgrade, et le serveur répond 101 avec Sec-WebSocket-Accept. Si vous obtenez 200, 400 ou 426 à la place, un intermédiaire a supprimé les en-têtes Upgrade. Derrière nginx, vous devez les transmettre explicitement avec proxy_http_version 1.1, proxy_set_header Upgrade $http_upgrade et proxy_set_header Connection upgrade.
Après le basculement, les délais d’inactivité deviennent le problème suivant : nginx ferme les connexions proxifiées après proxy_read_timeout, 60 secondes par défaut, et AWS ALB a un délai d’inactivité de 60 secondes, donc les sockets silencieux ont besoin de pings. HTTP/2 n’utilise pas du tout 101 ; les WebSockets sur HTTP/2 utilisent le CONNECT étendu de la RFC 8441. Un 101 n’a pas de corps et n’est jamais mis en cache.
Information (1xx)
Les codes 1xx sont informatifs : le serveur a reçu la requête et l’échange se poursuit. Les navigateurs et les bibliothèques HTTP les gèrent pour vous.
À quoi ça ressemble
HTTP/1.1 101 Switching ProtocolsComment le vérifier
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/