ค่าเหล่านี้ไม่ใช่การสะกดที่แข่งขันกันของโหมดเดียว:

Connection: Upgrade
Connection: keep-alive, Upgrade

ค่าที่สองระบุตัวเลือกการเชื่อมต่อสองตัว HTTP กำหนดให้ Connection เป็นรายการที่คั่นด้วยจุลภาค โดยชื่อตัวเลือกไม่สนตัวพิมพ์เล็กใหญ่ โค้ดที่เปรียบเทียบค่าทั้งหมดกับสตริง Upgrade ตรงตัวจะพลาดรายการที่ถูกต้องซึ่งมีตัวเลือกนั้น

สำหรับการส่งต่อปกติ ตัวกลาง HTTP จะแยกวิเคราะห์ฟิลด์ที่เข้ามา ลบฟิลด์ที่ถูกระบุชื่อโดยตัวเลือกของมัน แล้วลบ Connection เองหรือแทนที่ด้วยตัวเลือกควบคุมของตัวกลางสำหรับการเชื่อมต่อถัดไป

การลบเฉพาะฟิลด์ Keep-Alive ที่เขียนตายตัวนั้นไม่เพียงพอ ข้อความอาจระบุฟิลด์อื่นที่เฉพาะเจาะจงกับการเชื่อมต่อในรายการ และฟิลด์นั้นต้องไม่รั่วไหลเข้าสู่การส่งต่อปกติ

การรองรับการอัปเกรดโปรโตคอลต้องจัดการการเชื่อมต่อทั้งสองและโปรโตคอลใหม่อย่างตั้งใจ การคัดลอก Upgrade header ที่เข้ามาโดยไม่คิดไม่ใช่การนำการส่งมอบนั้นไปใช้

เมื่อเบราว์เซอร์หนึ่งทำงานได้และอีกตัวล้มเหลว ให้เปรียบเทียบค่าฟิลด์จริงทั้งสองด้านของตัวกลาง ความต่างระหว่างโทเค็นเดียวกับรายการสองโทเค็นสามารถเปิดเผยข้อผิดพลาดของตัวแยกวิเคราะห์ได้โดยไม่ต้องให้เบราว์เซอร์เลียนแบบการจัดรูปแบบที่แน่นอนของเบราว์เซอร์อื่น

เรื่องนี้เกี่ยวกับข้อความ HTTP ที่พร็อกซีแยกวิเคราะห์ อุโมงค์ HTTPS CONNECT ปกติไม่ได้เปิดเผยฟิลด์ Connection ของเว็บไซต์ที่เข้ารหัสให้พร็อกซีนั้น

บทความที่เกี่ยวข้อง