Spec-Zone.ru › HTTP

Заголовки: Upgrade

Заголовок Upgrade

HTTP-заголовок Upgrade запроса и ответа можно использовать для переключения уже установленного соединения клиент/сервер на другой протокол (при использовании того же транспортного протокола). Например, клиент может использовать его для переключения соединения с HTTP/1.1 на HTTP/2 или соединения HTTP(S) на соединение WebSocket.

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

Тип заголовка Заголовок запроса, заголовок ответа
Запрещённый заголовок запроса Да

Синтаксис

Upgrade: <protocol>[/<protocol_version>]
Upgrade: <protocol>[/<protocol_version>], …, <protocolN>[/<protocol_versionN>]

Директивы

<protocol>

Протоколы перечисляются через запятую в порядке убывания предпочтительности.

<protocol_version> Необязательно

Можно указать необязательную версию протокола, предварив её косой чертой /.

Описание

Поле заголовка 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. Отправить ответ на исходный запрос с использованием нового протокола (сервер может переключиться только на протокол, с помощью которого он может обработать исходный запрос).

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

Дополнительные сведения и примеры приведены в статье Механизм переключения протоколов.

Примеры

>

Заголовок Upgrade с несколькими протоколами

В следующем запросе несколько протоколов перечислены в порядке убывания предпочтительности:

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

Переключение на WebSocket

Это часто используемое сочетание заголовков для начала переключения соединения HTTP на WebSocket. Подробнее см. в статье Переключение на соединение WebSocket.

Connection: Upgrade
Upgrade: websocket

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

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

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

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
Upgrade 5 12 6 15 5 18 6 14 4.2 1.0 4.4 4.2

См. также

  • Механизм переключения протоколов
  • 101 Switching Protocols
  • 426 Upgrade Required
  • Connection

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

Spec-Zone.ru

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