Spec-Zone.ru › HTTP

Заголовки: Sec-WebSocket-Key

Заголовок Sec-WebSocket-Key

Базовая поддержка Широко доступно

Эта возможность хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.

  • Подробнее
  • Полная информация о совместимости
>

HTTP-заголовок Sec-WebSocket-Key — это заголовок запроса, который используется при рукопожатии для открытия WebSocket-соединения. Он позволяет клиенту (пользовательскому агенту) подтвердить, что он «действительно хочет», чтобы HTTP-клиент перешёл на WebSocket.

Значение ключа вычисляется с помощью алгоритма, определённого в спецификации WebSocket, поэтому оно не обеспечивает безопасность. Вместо этого оно помогает предотвратить запросы на установление WebSocket-соединения от клиентов, не использующих WebSocket, которые могут быть отправлены случайно или в результате неправильного использования.

Этот заголовок автоматически добавляется пользовательскими агентами при открытии WebSocket из скрипта; его нельзя добавить с помощью методов fetch() или XMLHttpRequest.setRequestHeader().

Заголовок ответа сервера Sec-WebSocket-Accept должен содержать значение, вычисленное на основе указанного значения ключа. Затем пользовательский агент может проверить его, прежде чем подтвердить соединение.

Тип заголовка Заголовок запроса
Запрещённый заголовок запроса Да (префикс Sec-)

Синтаксис

Sec-WebSocket-Key: <key>

Директивы

<key>

Ключ для этого запроса на переключение протокола. Это случайно выбранное 16-байтовое значение nonce, закодированное в Base64 и изоморфно закодированное. Пользовательский агент добавляет его при установлении WebSocket-соединения.

Примеры

>

Рукопожатие для открытия WebSocket-соединения

Клиент инициирует рукопожатие WebSocket с помощью запроса, подобного приведённому ниже. Обратите внимание, что он начинается как HTTP-запрос GET (HTTP/1.1 или более поздней версии). Помимо Sec-WebSocket-Key, запрос включает заголовок Upgrade, указывающий на намерение перейти с HTTP на WebSocket-соединение.

GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

Ответ сервера должен включать заголовок Sec-WebSocket-Accept со значением, вычисленным на основе заголовка Sec-WebSocket-Key в запросе. Он подтверждает намерение переключить соединение на WebSocket:

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

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

Спецификация
Протокол WebSocket>
# section-11.3.1>

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

Настольные Мобильные
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
Sec-WebSocket-Key 16 12 11 15 6 18 14 14 6 1.0 4.4 6

См. также

  • Sec-WebSocket-Accept
  • Sec-WebSocket-Version
  • Sec-WebSocket-Protocol
  • Sec-WebSocket-Extensions
  • Рукопожатие WebSocket в статье Написание серверов WebSocket
  • Механизм переключения протокола HTTP

© 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-Key

Spec-Zone.ru

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