HTTP-Connection-Header als kommagetrennte Tokens parsen
Jede Connection-Option ohne Rücksicht auf Groß- und Kleinschreibung parsen, wenn ein Forward-Proxy keep-alive und Upgrade im selben HTTP/1.1-Feld antrifft.
Diese Werte sind keine konkurrierenden Schreibweisen eines einzelnen Modus:
Connection: Upgrade
Connection: keep-alive, UpgradeDer zweite listet zwei Verbindungsoptionen auf. HTTP definiert Connection als kommagetrennte Liste, wobei die Optionsnamen nicht zwischen Groß- und Kleinschreibung unterscheiden. Code, der den gesamten Wert mit der exakten Zeichenkette Upgrade vergleicht, übersieht eine gültige Liste, die diese Option enthält.
Bei der gewöhnlichen Weiterleitung parst ein HTTP-Intermediär das eingehende Feld, entfernt die durch seine Optionen benannten Felder und entfernt dann Connection selbst oder ersetzt es durch die eigenen Steuerungsoptionen des Intermediärs für die Weiterverbindung.
Nur ein fest kodiertes Keep-Alive-Feld zu entfernen, reicht nicht aus. Eine Nachricht kann ein anderes verbindungsspezifisches Feld in der Liste benennen, und dieses Feld darf nicht in die gewöhnliche Weiterleitung gelangen.
Die Unterstützung eines Protokoll-Upgrades erfordert den bewussten Umgang mit den beiden Verbindungen und dem neuen Protokoll. Das blinde Kopieren der eingehenden Upgrade-Header ist keine Umsetzung dieser Übergabe.
Wenn ein Browser funktioniert und ein anderer scheitert, vergleiche die tatsächlichen Feldwerte auf beiden Seiten des Intermediärs. Ein Unterschied zwischen einem einzelnen Token und einer Liste aus zwei Tokens kann einen Parserfehler aufdecken, ohne dass der Browser die genaue Formatierung eines anderen Browsers nachahmen muss.
Dies betrifft die HTTP-Nachrichten, die der Proxy parst. Ein gewöhnlicher HTTPS-CONNECT-Tunnel legt das Connection-Feld der verschlüsselten Website nicht gegenüber diesem Proxy offen.