Ці значення не є конкуруючими написаннями одного режиму:

Connection: Upgrade
Connection: keep-alive, Upgrade

Друге перелічує два параметри з'єднання. HTTP визначає Connection як список через кому, причому назви параметрів нечутливі до регістру. Код, що порівнює все значення з точним рядком Upgrade, пропускає припустимий список, який містить цей параметр.

Для звичайного пересилання HTTP-посередник розбирає вхідне поле, видаляє поля, названі його параметрами, а потім видаляє сам Connection або замінює його власними керівними параметрами для подальшого з'єднання.

Видалення лише жорстко заданого поля Keep-Alive недостатньо. Повідомлення може назвати в списку інше поле, специфічне для з'єднання, і це поле не повинно потрапити у звичайне пересилання.

Підтримка оновлення протоколу потребує усвідомленої обробки обох з'єднань і нового протоколу. Сліпе копіювання вхідних заголовків Upgrade не є реалізацією такої передачі.

Коли один браузер працює, а інший ні, порівняйте фактичні значення поля з обох боків посередника. Різниця між одним токеном і списком із двох токенів може виявити помилку розбору, не вимагаючи від браузера імітувати точне форматування іншого браузера.

Це стосується HTTP-повідомлень, які розбирає проксі. Звичайний тунель HTTPS CONNECT не розкриває цьому проксі поле Connection зашифрованого сайту.

Схожі статті