Connection
Utilisation
L’en-tête Connection est un en-tête saut par saut de HTTP/1.1 servant à gérer le cycle de vie de la connexion TCP sous-jacente. Un client ou un serveur l’inclut pour signaler si la connexion persiste pour d’autres requêtes ou se ferme après l’échange en cours.
En HTTP/1.1, les connexions persistantes sont le comportement par défaut. Envoyer Connection: keep-alive est techniquement redondant, mais la pratique reste courante. L’en-tête Keep-Alive fonctionne de concert avec l’en-tête Connection pour fixer des délais d’expiration et des limites de requêtes sur les connexions persistantes.
L’en-tête Connection remplit également un second rôle : énumérer les noms des champs d’en-tête saut par saut présents dans le message. Les intermédiaires (proxys, passerelles) suppriment tout en-tête listé dans la valeur de Connection avant de transmettre le message au saut suivant.
Remarque
HTTP/1.0 fermait par défaut les connexions après chaque cycle requête-réponse, ce qui imposait Connection: keep-alive pour obtenir des connexions persistantes. HTTP/1.1 a inversé ce comportement par défaut : les connexions persistent à moins que Connection: close ne soit envoyé explicitement. Envoyez Connection: close après la dernière requête d’une série pour libérer les ressources du serveur, ou lorsque le serveur est fortement sollicité.
Remarque
L’en-tête Connection est interdit en HTTP/2 et HTTP/3. Ces protocoles gèrent le cycle de vie de la connexion au moyen de leurs propres couches de tramage. Les proxys qui convertissent entre HTTP/1.1 et HTTP/2 suppriment cet en-tête automatiquement.
keep-alive
La directive keep-alive signale que l’émetteur souhaite que la connexion reste ouverte pour les requêtes suivantes. C’est le comportement par défaut en HTTP/1.1. Lorsqu’elle est présente, l’en-tête Keep-Alive fournit des paramètres tels que le délai d’inactivité et le nombre maximal de requêtes.
close
La directive close indique à l’autre partie de fermer la connexion une fois le couple requête-réponse en cours terminé. En HTTP/1.0, la fermeture après chaque transaction était le comportement par défaut.
Exemple
Un client envoie une requête avec une directive keep-alive explicite. Cela indique au serveur de maintenir la connexion TCP ouverte après avoir délivré la réponse.
GET /api/status HTTP/1.1
Host: api.example.re
Connection: keep-alive
Un serveur signale que la connexion se fermera après la remise de cette réponse. Le client ouvre une nouvelle connexion TCP pour la requête suivante.
HTTP/1.1 200 OK
Content-Type: application/json
Connection: close
L’en-tête Connection énumère aussi les en-têtes saut par saut. Dans cet exemple, le proxy supprime l’en-tête X-Debug-Token avant de transmettre le message.
GET /resource HTTP/1.1
Host: example.re
Connection: keep-alive, X-Debug-Token
X-Debug-Token: abc123