101
Не критично — устраняется самостоятельно

Ошибка 101 — HTTP-статусы

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

Код 101 Switching Protocols — это промежуточный ответ сервера на запрос клиента, который просит переключить протокол связи. Сервер соглашается и меняет протокол, например, с HTTP на WebSocket. В этот момент соединение переводится в новый режим, и дальнейший обмен данными идёт уже по новому протоколу. Пользователь обычно не видит этого кода напрямую — браузер обрабатывает его автоматически, устанавливая WebSocket-соединение. Если переключение не удаётся, соединение может разорваться или остаться в HTTP.

Вероятные причины

  • Клиент отправил заголовок Upgrade (например, Upgrade: websocket) с запросом на смену протокола
  • Сервер поддерживает запрошенный протокол и отвечает 101
  • Прокси-сервер или балансировщик не поддерживает переключение протоколов и блокирует ответ
  • Некорректная конфигурация сервера (например, не включён модуль WebSocket)
  • Брандмауэр или антивирус блокирует нестандартные заголовки Upgrade
  • Клиент не обрабатывает ответ 101 и пытается продолжить HTTP-сессию
  • Сервер возвращает 101, но не переключает протокол фактически (ошибка реализации)
  • Версия HTTP/1.0 не поддерживает механизм Upgrade (требуется HTTP/1.1 или выше)

Что делать — по порядку

  1. Проверьте, что клиент отправляет корректный заголовок Upgrade и Connection: Upgrade
  2. Убедитесь, что сервер поддерживает запрошенный протокол (например, WebSocket)
  3. Проверьте конфигурацию веб-сервера: для Apache — модуль mod_proxy_wstunnel, для Nginx — proxy_pass с http:// или ws://
  4. Проверьте логи сервера на наличие ошибок при обработке Upgrade
  5. Отключите промежуточные прокси или настройте их на проброс заголовков Upgrade
  6. Проверьте, что используется HTTP/1.1 или выше (HTTP/1.0 не поддерживает Upgrade)
  7. Протестируйте с помощью curl: curl -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Version: 13" http://example.com
  8. Если проблема на клиенте — обновите библиотеку WebSocket или браузер

Нажимайте на пункты, чтобы отмечать выполненные.

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

Почему я вижу код 101 в консоли браузера?

Это нормально — браузер показывает ответ сервера на запрос переключения на WebSocket. Если соединение установлено успешно, дальше будут сообщения WebSocket.

Может ли код 101 быть ошибкой?

Нет, это штатный ответ. Ошибкой может быть отсутствие ответа 101 при попытке установить WebSocket — тогда соединение не переключится.

Как исправить, если WebSocket не работает и нет 101?

Проверьте, что сервер поддерживает WebSocket, и что прокси не блокирует заголовки Upgrade. Также убедитесь, что используется HTTP/1.1.

Что делать, если сервер возвращает 101, но соединение обрывается?

Возможно, сервер не завершает переключение протокола корректно. Проверьте логи сервера и настройки тайм-аутов.

Поддерживает ли HTTP/2 код 101?

Нет, HTTP/2 не поддерживает механизм Upgrade. Для WebSocket поверх HTTP/2 используется другой метод (RFC 8441).

Источники