Aceste valori nu sunt grafii concurente ale unui singur mod:

Connection: Upgrade
Connection: keep-alive, Upgrade

A doua enumeră două opțiuni de conexiune. HTTP definește Connection ca o listă separată prin virgule, cu nume de opțiuni care nu țin cont de majuscule. Codul care compară întreaga valoare cu șirul exact Upgrade ratează o listă validă care conține această opțiune.

Pentru redirecționarea obișnuită, un intermediar HTTP analizează câmpul primit, elimină câmpurile numite de opțiunile sale, apoi elimină Connection însuși sau îl înlocuiește cu propriile opțiuni de control pentru conexiunea următoare.

Eliminarea doar a unui câmp Keep-Alive codificat fix nu este suficientă. Un mesaj poate numi în listă un alt câmp specific conexiunii, iar acel câmp nu trebuie să ajungă în redirecționarea obișnuită.

Susținerea unei actualizări de protocol cere tratarea deliberată a celor două conexiuni și a noului protocol. Copierea oarbă a antetelor Upgrade primite nu este o implementare a acelei predări.

Când un browser funcționează și altul eșuează, compară valorile reale ale câmpului pe ambele părți ale intermediarului. O diferență între un singur token și o listă cu două tokenuri poate dezvălui o eroare de parser fără a cere browserului să imite formatarea exactă a altui browser.

Acest lucru privește mesajele HTTP pe care proxy-ul le analizează. Un tunel HTTPS CONNECT obișnuit nu expune acelui proxy câmpul Connection al site-ului criptat.

Articole similare