Заголовок обновления HTTP/1.1
HTTP |
---|
![]() |
Методы запроса |
Поля заголовка |
Коды статуса ответа |
Методы безопасного контроля доступа |
Уязвимости безопасности |
Поле заголовка Upgrade — это поле заголовка HTTP, представленное в HTTP/1.1 . При обмене клиент начинает с запроса открытого текста , который позже обновляется до более новой версии протокола HTTP или переключается на другой протокол. Обновление соединения должно быть запрошено клиентом; если сервер хочет принудительно выполнить обновление, он может отправить 426 Upgrade Required
ответ. Затем клиент может отправить новый запрос с соответствующими заголовками обновления, сохраняя при этом соединение открытым.
Использовать с TLS
[ редактировать ]Один из вариантов использования — начать запрос через обычный HTTP-порт, но переключиться на Transport Layer Security (TLS). [ 1 ] На практике такое использование встречается редко, поскольку HTTPS является гораздо более распространенным способом запуска зашифрованного HTTP.
Сервер возвращает 426
код состояния , чтобы предупредить устаревших клиентов о том, что сбой связан с клиентом ( 400
коды уровней указывают на сбой клиента).
Этот метод установления безопасного соединения выгоден, поскольку он:
- Не требует запутанного и проблемного перенаправления URL-адресов на стороне сервера;
- Включает виртуальный хостинг защищенных веб-сайтов (хотя HTTPS также позволяет это с помощью указания имени сервера ); и
- Уменьшает вероятность путаницы пользователей, предоставляя единый способ доступа к определенному ресурсу.
Если одни и те же ресурсы доступны с сервера как с помощью зашифрованных безопасных средств, так и с помощью незашифрованных открытых средств, посредник может поддерживать незашифрованное и неаутентифицированное соединение с клиентом, сохраняя при этом зашифрованное соединение с сервером.
К недостаткам этого метода относятся:
- Клиент не может указать требование безопасного HTTP в URI (хотя клиент может потребовать его посредством согласования обновления); и
- Поскольку протокол HTTP определяется для каждого перехода , туннелирование HTTP . для обхода прокси-серверов может потребоваться
Использование с WebSocket
[ редактировать ]WebSocket также использует этот механизм для установки совместимого соединения с HTTP-сервером. [ 2 ] Протокол WebSocket состоит из двух частей: рукопожатие для установления обновленного соединения, а затем фактическая передача данных. Сначала клиент запрашивает соединение WebSocket, используя метод Upgrade: WebSocket
и Connection: Upgrade
заголовки, а также несколько заголовков, специфичных для протокола, для определения используемой версии и настройки рукопожатия. Сервер, если он поддерживает протокол, отвечает тем же Upgrade: WebSocket
и Connection: Upgrade
заголовки и завершает рукопожатие. [ 3 ] После успешного завершения рукопожатия начинается передача данных.
Использовать с HTTP/2
[ редактировать ]Механизм обновления HTTP используется для установки HTTP/2, начиная с обычного HTTP. [ 4 ]
Клиент запускает соединение HTTP/1.1 и отправляет Upgrade: h2c
заголовок. Если сервер поддерживает HTTP/2, он отвечает кодом состояния протокола коммутации HTTP 101 . Механизм обновления HTTP используется только для открытого текста HTTP2 (h2c). В случае HTTP2 через TLS (h2) ALPN вместо этого используется расширение протокола TLS.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ RFC 2817
- ^ Фетте, И.; Мельников, А. (2011). «Протокол WebSocket» . IETF. дои : 10.17487/RFC6455 . Проверено 15 декабря 2013 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Рэймор, Брайан. «WebSockets: стабильно и готово для разработчиков» . Сеть разработчиков Microsoft. Архивировано из оригинала 16 декабря 2013 года . Проверено 15 декабря 2013 г.
- ^ «Запуск HTTP/2 для URI «http»» . Протокол передачи гипертекста версии 2 (HTTP/2) . дои : 10.17487/RFC7540 . РФК 7540 .
Внешние ссылки
[ редактировать ]- Обновление реестра токенов протокола передачи гипертекста (HTTP) в IANA