DevToolPal
ES
1xx Informativos

101 Switching Protocols

Cambiando de protocolo

Qué significa

El servidor acepta cambiar al protocolo que el cliente pidió en la cabecera Upgrade, casi siempre WebSocket. Tras esta respuesta la conexión habla el nuevo protocolo.

Causas habituales

  • Un handshake de WebSocket tuvo éxito
  • El cliente pidió pasar a h2c (HTTP/2 sin cifrar)
  • Se aceptó el cambio a un protocolo propio

Cómo solucionarlo

Si eres el cliente o visitante

101 significa éxito para WebSocket. Si esperabas 101 y recibes 200 o 400, comprueba que la URL apunte al endpoint de WebSocket y que los proxies reenvíen las cabeceras Upgrade y Connection.

Si administras el sitio o la API

Detrás de nginx o de un balanceador, pasa Upgrade y Connection explícitamente (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") y amplía los tiempos de inactividad para sockets de larga duración.

Respuesta de ejemplo

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

Especificación

RFC 9110 §15.2.2

Preguntas frecuentes

› ¿Por qué mi WebSocket devuelve 400 en lugar de 101?

Faltan o se alteraron las cabeceras del handshake, a menudo por un proxy que elimina Upgrade/Connection, o la Sec-WebSocket-Key o la versión no son válidas.

› ¿HTTP/2 usa 101?

Solo en el raro cambio a h2c sin cifrar. Los navegadores negocian HTTP/2 mediante TLS ALPN, y HTTP/2 no tiene respuesta 101.