En-tête de mise à niveau HTTP / 1.1 - HTTP/1.1 Upgrade header

Le champ d'en- tête Upgrade est un champ d'en-tête HTTP introduit dans HTTP / 1.1 . Dans l'échange, le client commence par effectuer une requête en texte clair , qui est ensuite mise à niveau vers une version plus récente du protocole HTTP ou basculée vers un protocole différent. Une mise à niveau de connexion doit être demandée par le client; si le serveur souhaite appliquer une mise à niveau, il peut envoyer une 426 Upgrade Required réponse. Le client peut alors envoyer une nouvelle demande avec les en-têtes de mise à niveau appropriés tout en gardant la connexion ouverte.

Utiliser avec TLS

Une utilisation consiste à lancer une requête sur le port HTTP normal mais à basculer vers Transport Layer Security (TLS). En pratique, une telle utilisation est rare, HTTPS étant un moyen beaucoup plus courant d'initier un HTTP chiffré.

Le serveur renvoie un 426 code d'état pour alerter les clients hérités que l'échec était lié au client (les 400 codes de niveau indiquent un échec client).

Cette méthode pour établir une connexion sécurisée est avantageuse car elle:

Si les mêmes ressources sont disponibles à partir du serveur via à la fois des moyens sécurisés cryptés et des moyens clairs non cryptés, un homme du milieu peut maintenir une connexion non cryptée et non authentifiée avec le client tout en maintenant une connexion cryptée avec le serveur.

Les inconvénients de cette méthode comprennent:

  • Le client ne peut pas spécifier l'exigence d'un HTTP sécurisé dans l'URI (bien que le client puisse l'exiger via la négociation de mise à niveau); et
  • Puisque HTTP est défini sur une base de sauts , le tunnel HTTP peut être nécessaire pour contourner les serveurs proxy.

Utiliser avec WebSocket

WebSocket utilise également ce mécanisme pour établir une connexion avec un serveur HTTP d'une manière compatible. Le protocole WebSocket comporte deux parties: une poignée de main pour établir la connexion mise à niveau, puis le transfert de données proprement dit. Tout d'abord, un client demande une connexion WebSocket en utilisant les en Upgrade: WebSocket - Connection: Upgrade têtes et , ainsi que quelques en-têtes spécifiques au protocole pour établir la version utilisée et configurer une poignée de main. Le serveur, s'il prend en charge le protocole, répond avec les mêmes en Upgrade: WebSocket - Connection: Upgrade têtes et termine la négociation. Une fois la prise de contact terminée avec succès, le transfert de données commence.

Utiliser avec HTTP / 2

Le mécanisme de mise à niveau HTTP est utilisé pour établir HTTP / 2 à partir d'un simple HTTP. Le client démarre une connexion HTTP / 1.1 et envoie un en- Upgrade: h2c tête. Si le serveur prend en charge HTTP / 2, il répond avec le code d'état du protocole de commutation HTTP 101 . Le mécanisme de mise à niveau HTTP est utilisé uniquement pour HTTP2 (h2c) en texte clair. Dans le cas de HTTP2 sur TLS (h2), l' extension de protocole ALPN TLS est utilisée à la place.

Voir également

Références

Liens externes