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