101 Switching Protocols

O servidor está mudando para o protocolo que o cliente pediu.

Quando usar

Atualização de uma conexão para WebSocket.

Bom saber

Você quase sempre vê o 101 durante um handshake de WebSocket: o cliente envia Upgrade: websocket e Connection: Upgrade, e o servidor responde 101 com Sec-WebSocket-Accept. Se você receber 200, 400 ou 426, algo no meio do caminho descartou os cabeçalhos Upgrade. Atrás do nginx, você precisa repassá-los explicitamente com proxy_http_version 1.1, proxy_set_header Upgrade $http_upgrade e proxy_set_header Connection upgrade.

Depois da troca, os timeouts de inatividade viram o próximo problema: o nginx fecha conexões proxy depois de proxy_read_timeout, 60 segundos por padrão, e o AWS ALB tem um timeout de inatividade de 60 segundos, então sockets ociosos precisam de pings. O HTTP/2 não usa 101; WebSockets sobre HTTP/2 usam o CONNECT estendido da RFC 8441. Um 101 não tem corpo e nunca vai para o cache.

Informativo (1xx)

Os códigos 1xx são informativos: o servidor recebeu a requisição e a troca continua. Navegadores e bibliotecas HTTP cuidam deles para você.

Como fica

HTTP/1.1 101 Switching Protocols

Como verificar

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

Abrir Códigos de status HTTP