Заголовки: 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). Если сервер переключит соединение, он должен:
-
Отправить в ответ статус
101 Switching Protocolsи заголовокUpgrade, указывающий протоколы, на которые выполняется переключение. Например:HTTP/1.1 101 Switching Protocols Upgrade: foo/2 Connection: Upgrade
-
Отправить ответ на исходный запрос с использованием нового протокола (сервер может переключиться только на протокол, с помощью которого он может обработать исходный запрос).
Сервер также может отправить этот заголовок в ответе 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
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 |
См. также
© 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