Tolka HTTP Connection-rubriker som kommaseparerade tokens
Tolka varje Connection-alternativ utan hänsyn till versaler och gemener när en vidarebefordrande proxy möter keep-alive och Upgrade i samma HTTP/1.1-fält.
Dessa värden är inte konkurrerande stavningar av ett enda läge:
Connection: Upgrade
Connection: keep-alive, Upgrade
Den andra räknar upp två anslutningsalternativ. HTTP definierar Connection som en kommaseparerad lista, med alternativnamn som inte skiljer på versaler och gemener. Kod som jämför hela värdet med den exakta strängen Upgrade missar en giltig lista som innehåller alternativet.
Vid vanlig vidarebefordran tolkar en HTTP-mellanhand det inkommande fältet, tar bort fält som namnges av dess alternativ och tar sedan bort Connection självt eller ersätter det med mellanhandens egna kontrollalternativ för den fortsatta anslutningen.
Att bara ta bort ett hårdkodat Keep-Alive-fält räcker inte. Ett meddelande kan namnge ett annat anslutningsspecifikt fält i listan, och det fältet får inte läcka in i vanlig vidarebefordran.
Stöd för en protokolluppgradering kräver medveten hantering av de två anslutningarna och det nya protokollet. Att blint kopiera de inkommande Upgrade-rubrikerna är ingen implementering av den överlämningen.
När en webbläsare fungerar och en annan misslyckas, jämför de faktiska fältvärdena på båda sidor av mellanhanden. En skillnad mellan en token och en lista med två tokens kan avslöja ett tolkningsfel utan att webbläsaren behöver efterlikna en annan webbläsares exakta formatering.
Detta gäller HTTP-meddelanden som proxyn tolkar. En vanlig HTTPS CONNECT-tunnel exponerar inte den krypterade webbplatsens Connection-fält för den proxyn.