DevToolPal
UK
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 немає.