Заголовки: Sec-WebSocket-Extensions
Заголовок Sec-WebSocket-Extensions
Baseline Широко доступно
Эта возможность хорошо зарекомендовала себя и работает на множестве устройств и в разных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Заголовок HTTP Sec-WebSocket-Extensions — это запросный и ответный заголовок, используемый при WebSocket-рукопожатии для согласования расширения протокола, используемого клиентом и сервером.
В запросе заголовок указывает одно или несколько расширений, которые веб-приложение хотело бы использовать, в порядке предпочтения. Их можно указать в нескольких заголовках или перечислить через запятую в одном заголовке. Каждое расширение также может иметь один или несколько параметров — они указываются после расширения через точку с запятой.
В ответе заголовок может присутствовать только один раз и указывает расширение, выбранное сервером из предпочтений клиента. Это значение должно соответствовать первому поддерживаемому сервером расширению из списка, предоставленного в заголовке запроса.
Запросный заголовок автоматически добавляется браузером на основе его возможностей и не зависит от параметров, переданных конструктору при создании WebSocket.
| Тип заголовка | Запросный заголовок, Ответный заголовок |
|---|---|
| Запрещённый запросный заголовок | Да (префикс Sec-) |
Синтаксис
Sec-WebSocket-Extensions: <extensions>
Директивы
<extensions>-
Список запрашиваемых расширений, разделённых запятыми (или расширений, поддержку которых должен подтвердить сервер). Обычно они выбираются из реестра имён расширений WebSocket IANA (также можно использовать пользовательские расширения). Параметры расширений отделяются точками с запятой.
Примеры
>Начальное рукопожатие WebSocket
В приведённом ниже HTTP-запросе показано начальное рукопожатие, при котором клиент поддерживает расширение permessage-deflate (с параметром client_max_window_bits) и расширение bbf-usp-protocol.
GET /chat HTTP/1.1 Host: example.com:8000 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13 Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, bbf-usp-protocol
Запрос ниже с отдельными заголовками для каждого расширения эквивалентен:
GET /chat HTTP/1.1 Host: example.com:8000 Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ== Sec-WebSocket-Version: 13 Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits Sec-WebSocket-Extensions: bbf-usp-protocol
Сервер может отправить ответ ниже, чтобы указать, что он будет поддерживать расширение permessage-deflate:
HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Sec-WebSocket-Extensions: permessage-deflate
Спецификации
| Спецификация |
|---|
| Протокол WebSocket> # section-11.3.2> |
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
Sec-WebSocket-Extensions |
16 | 12 | 11 | 15 | 6 | 18 | 14 | 14 | 6 | 1.0 | 4.4 | 6 |
См. также
Sec-WebSocket-AcceptSec-WebSocket-KeySec-WebSocket-VersionSec-WebSocket-Protocol- Рукопожатие WebSocket и Подпротоколы в статье Создание серверов WebSocket
© 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/Sec-WebSocket-Extensions