Connection
Uso
La cabecera Connection es una cabecera salto a salto de HTTP/1.1 que se usa para gestionar el ciclo de vida de la conexión TCP subyacente. Un cliente o un servidor incluye esta cabecera para indicar si la conexión se mantiene para solicitudes adicionales o se cierra tras el intercambio actual.
En HTTP/1.1, las conexiones persistentes son el comportamiento predeterminado. Enviar Connection: keep-alive es técnicamente redundante, pero sigue siendo habitual en la práctica. La cabecera Keep-Alive funciona junto a la cabecera Connection para fijar el tiempo de espera y los límites de solicitudes en las conexiones persistentes.
La cabecera Connection cumple además una segunda función: enumerar los nombres de los campos de cabecera salto a salto presentes en el mensaje. Los intermediarios (proxies, pasarelas) eliminan toda cabecera listada en el valor de Connection antes de reenviar el mensaje al siguiente salto.
Nota
HTTP/1.0 cerraba las conexiones de forma predeterminada tras cada ciclo de solicitud-respuesta, por lo que requería Connection: keep-alive para lograr conexiones persistentes. HTTP/1.1 invirtió el valor predeterminado, de modo que las conexiones se mantienen salvo que se envíe explícitamente Connection: close. Envíe Connection: close después de la última solicitud de una serie para liberar recursos del servidor, o cuando el servidor esté muy cargado.
Nota
La cabecera Connection está prohibida en HTTP/2 y HTTP/3. Estos protocolos gestionan el ciclo de vida de la conexión mediante sus propias capas de entramado. Los proxies que convierten entre HTTP/1.1 y HTTP/2 eliminan esta cabecera automáticamente.
keep-alive
La directiva keep-alive indica que el emisor desea que la conexión permanezca abierta para solicitudes posteriores. Es el valor predeterminado en HTTP/1.1. Cuando está presente, la cabecera Keep-Alive aporta parámetros como el tiempo de espera de inactividad y el número máximo de solicitudes.
close
La directiva close indica a la otra parte que cierre la conexión tras completar el par solicitud-respuesta actual. En HTTP/1.0, cerrar después de cada transacción era el comportamiento predeterminado.
Ejemplo
Un cliente envía una solicitud con una directiva keep-alive explícita. Esto indica al servidor que mantenga abierta la conexión TCP después de entregar la respuesta.
GET /api/status HTTP/1.1
Host: api.example.re
Connection: keep-alive
Un servidor señala que la conexión se cerrará tras entregar esta respuesta. El cliente abre una nueva conexión TCP para la siguiente solicitud.
HTTP/1.1 200 OK
Content-Type: application/json
Connection: close
La cabecera Connection también enumera las cabeceras salto a salto. En este ejemplo, el proxy elimina la cabecera X-Debug-Token antes de reenviar el mensaje.
GET /resource HTTP/1.1
Host: example.re
Connection: keep-alive, X-Debug-Token
X-Debug-Token: abc123