DevToolPal
RU
1xx Информационные

101 Switching Protocols

Переключение протоколов

Что это значит

Сервер соглашается перейти на протокол, запрошенный клиентом в заголовке Upgrade, чаще всего WebSocket. После этого ответа соединение работает по новому протоколу.

Типичные причины

  • Рукопожатие WebSocket прошло успешно
  • Клиент запросил переход на h2c (HTTP/2 без шифрования)
  • Принят переход на собственный протокол

Как исправить

Если вы клиент или посетитель

Для WebSocket 101 означает успех. Если вы ждали 101, а получили 200 или 400, проверьте, что URL указывает на WebSocket-эндпоинт и что прокси передают заголовки Upgrade и Connection.

Если вы владелец сайта или API

За nginx или балансировщиком явно передавайте Upgrade и Connection (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") и увеличьте тайм-ауты простоя для долгоживущих сокетов.

Пример ответа

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

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

RFC 9110 §15.2.2

Частые вопросы

› Почему мой WebSocket возвращает 400 вместо 101?

Заголовки рукопожатия отсутствуют или изменены — часто прокси удаляет Upgrade/Connection — либо неверны Sec-WebSocket-Key или версия.

› Использует ли HTTP/2 код 101?

Только для редкого перехода на h2c без шифрования. Браузеры согласуют HTTP/2 через TLS ALPN, а в самом HTTP/2 ответа 101 нет.