DevToolPal
PT
1xx Informativos

101 Switching Protocols

Mudando de protocolo

O que significa

O servidor concorda em mudar para o protocolo que o cliente pediu no cabeçalho Upgrade, quase sempre WebSocket. Depois desta resposta a conexão passa a usar o novo protocolo.

Causas comuns

  • Um handshake de WebSocket foi bem-sucedido
  • O cliente pediu upgrade para h2c (HTTP/2 sem criptografia)
  • Um upgrade para protocolo próprio foi aceito

Como resolver

Se você é o cliente ou visitante

101 significa sucesso para WebSocket. Se você esperava 101 e recebeu 200 ou 400, confira se a URL aponta para o endpoint de WebSocket e se os proxies repassam os cabeçalhos Upgrade e Connection.

Se você mantém o site ou a API

Atrás do nginx ou de um balanceador, repasse Upgrade e Connection explicitamente (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") e aumente os timeouts de inatividade para sockets de longa duração.

Resposta de exemplo

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

Especificação

RFC 9110 §15.2.2

Perguntas frequentes

› Por que meu WebSocket retorna 400 em vez de 101?

Os cabeçalhos do handshake estavam ausentes ou foram alterados, muitas vezes por um proxy que remove Upgrade/Connection, ou a Sec-WebSocket-Key ou a versão é inválida.

› O HTTP/2 usa 101?

Só no raro upgrade h2c sem criptografia. Navegadores negociam HTTP/2 via TLS ALPN, e o HTTP/2 em si não tem resposta 101.