Te wartości nie są konkurencyjnymi zapisami jednego trybu:

Connection: Upgrade
Connection: keep-alive, Upgrade

Drugi wariant wymienia dwie opcje połączenia. HTTP definiuje Connection jako listę oddzieloną przecinkami, a nazwy opcji nie rozróżniają wielkości liter. Kod porównujący całą wartość z dokładnym ciągiem Upgrade pomija poprawną listę zawierającą tę opcję.

Przy zwykłym przekazywaniu pośrednik HTTP analizuje przychodzące pole, usuwa pola nazwane przez swoje opcje, a następnie usuwa samo Connection lub zastępuje je własnymi opcjami sterującymi dla dalszego połączenia.

Usunięcie tylko zakodowanego na stałe pola Keep-Alive nie wystarcza. Komunikat może wskazać w liście inne pole specyficzne dla połączenia i to pole nie może przedostać się do zwykłego przekazywania.

Obsługa aktualizacji protokołu wymaga świadomego potraktowania obu połączeń i nowego protokołu. Bezmyślne kopiowanie przychodzących nagłówków Upgrade nie jest implementacją tego przekazania.

Gdy jedna przeglądarka działa, a druga zawodzi, porównaj rzeczywiste wartości pól po obu stronach pośrednika. Różnica między jednym tokenem a listą dwóch tokenów może ujawnić błąd parsera bez konieczności naśladowania przez przeglądarkę dokładnego formatowania innej przeglądarki.

Dotyczy to komunikatów HTTP, które analizuje proxy. Zwykły tunel HTTPS CONNECT nie udostępnia temu proxy pola Connection szyfrowanej witryny.

Powiązane artykuły