Ces valeurs ne sont pas des graphies concurrentes d'un seul mode :

Connection: Upgrade
Connection: keep-alive, Upgrade

La seconde énumère deux options de connexion. HTTP définit Connection comme une liste séparée par des virgules, dont les noms d'option sont insensibles à la casse. Un code qui compare la valeur entière à la chaîne exacte Upgrade manque une liste valide contenant cette option.

Pour le transfert ordinaire, un intermédiaire HTTP analyse le champ entrant, supprime les champs nommés par ses options, puis supprime Connection lui-même ou le remplace par ses propres options de contrôle pour la connexion sortante.

Supprimer uniquement un champ Keep-Alive codé en dur ne suffit pas. Un message peut nommer un autre champ propre à la connexion dans la liste, et ce champ ne doit pas fuiter dans le transfert ordinaire.

Prendre en charge une mise à niveau de protocole exige de traiter délibérément les deux connexions et le nouveau protocole. Copier aveuglément les en-têtes Upgrade entrants n'est pas une mise en œuvre de cette passation.

Lorsqu'un navigateur fonctionne et qu'un autre échoue, comparez les valeurs réelles des champs des deux côtés de l'intermédiaire. Une différence entre un seul jeton et une liste de deux jetons peut révéler une erreur d'analyse sans obliger le navigateur à imiter le formatage exact d'un autre navigateur.

Cela concerne les messages HTTP que le proxy analyse. Un tunnel HTTPS CONNECT ordinaire n'expose pas au proxy le champ Connection du site chiffré.

Articles similaires