Spec-Zone.ru › HTTP

Модернизация

Модернизация

Заголовок HTTP 1.1 (только) Upgrade может использоваться для модернизации уже установленного соединения клиент/сервер до другого протокола (по тому же транспортному протоколу). Например, его может использовать клиент для модернизации соединения с HTTP 1.1 до HTTP 2.0 или соединения HTTP или HTTPS в WebSocket.

Предупреждение: HTTP/2 явно запрещает использование этого механизма/заголовка; он специфичен для HTTP/1.1.

Тип заголовка Заголовок запроса, Заголовок ответа
Запрещенное имя заголовка да

Обзор

Поле заголовка Upgrade может использоваться клиентами, чтобы предложить серверу переключиться на один (или несколько) из перечисленных протоколов в порядке убывания приоритета.

Например, клиент может отправить запрос GET как показано ниже, перечислив предпочтительные протоколы для переключения (в данном случае "example/1" и "foo/2"):

GET /index.html HTTP/1.1
Host: www.example.com
Connection: upgrade
Upgrade: example/1, foo/2

Примечание: Connection: upgrade должен быть установлен всякий раз, когда отправляется Upgrade.

Сервер может проигнорировать запрос по любой причине, в этом случае он должен ответить так, как если бы заголовок Upgrade не был отправлен (например, с 200 OK).

Если сервер решит модернизировать соединение, он должен:

  1. Отправить ответ со статусом 101 Switching Protocols с заголовком Upgrade, который указывает протокол(ы), на который происходит переключение. Например:
    HTTP/1.1 101 Switching Protocols
    Upgrade: foo/2
    Connection: Upgrade
    
  2. Отправить ответ на исходный запрос с использованием нового протокола (сервер может переключиться только на протокол, с помощью которого он может выполнить исходный запрос).

Сервер также может отправить заголовок в рамках ответа 426 Upgrade Required, чтобы указать, что сервер не выполнит запрос с использованием текущего протокола, но может сделать это, если протокол изменится. Затем клиент может запросить изменение протокола, используя описанный выше процесс.

Более подробная информация и примеры приведены в разделе Механизм модернизации протокола.

Синтаксис

Connection: upgrade
Upgrade: protocol_name[/protocol_version]

Примечания:

  • Заголовок Connection с типом upgrade всегда должен отправляться вместе с заголовком Upgrade (как показано выше).
  • Протоколы перечисляются через запятую в порядке убывания приоритета. Версия протокола необязательна. Например:
Connection: upgrade
Upgrade: a_protocol/1, example, another_protocol/2.2

Директивы

любой список протоколов, разделённых запятыми (каждый с необязательной версией протокола)

Один или несколько имён протоколов с необязательной версией ("/" разделены). Протоколы перечислены в порядке убывания приоритета.

Примеры

Connection: upgrade
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Connection: Upgrade
Upgrade: websocket

Спецификации

Спецификация
Семантика HTTP
# field.upgrade
Семантика HTTP
# status.426
HTTP/2
# informational-responses

Совместимость с браузерами

Рабочий стол Мобильный
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
Upgrade
Да
Да
Да
Нет
Да
Нет
Да
Да
Да
Да
Нет
Да

См. также

  • Механизм модернизации протокола
  • 101 Switching Protocol
  • 426 Upgrade Required
  • Connection

© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Upgrade

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API