DevToolPal
VI
1xx Thông tin

101 Switching Protocols

Chuyển đổi giao thức

Ý nghĩa

Máy chủ đồng ý chuyển sang giao thức mà client yêu cầu trong header Upgrade, thường là WebSocket. Sau phản hồi này kết nối dùng giao thức mới.

Nguyên nhân thường gặp

  • Bắt tay WebSocket thành công
  • Client yêu cầu nâng cấp h2c (HTTP/2 không mã hóa)
  • Một yêu cầu nâng cấp giao thức tùy chỉnh được chấp nhận

Cách khắc phục

Nếu bạn là máy khách hoặc người truy cập

Với WebSocket, 101 nghĩa là thành công. Nếu mong đợi 101 nhưng nhận 200 hoặc 400, hãy kiểm tra URL trỏ đúng endpoint WebSocket và proxy có chuyển tiếp header Upgrade và Connection.

Nếu bạn quản lý trang web hoặc API

Đứng sau nginx hoặc bộ cân bằng tải, hãy chuyển tiếp rõ ràng Upgrade và Connection (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") và tăng thời gian chờ nhàn rỗi cho socket sống lâu.

Phản hồi mẫu

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

Đặc tả

RFC 9110 §15.2.2

Câu hỏi thường gặp

› Vì sao WebSocket của tôi trả 400 thay vì 101?

Header bắt tay bị thiếu hoặc bị thay đổi, thường do proxy loại bỏ Upgrade/Connection, hoặc Sec-WebSocket-Key hay phiên bản không hợp lệ.

› HTTP/2 có dùng 101 không?

Chỉ trong trường hợp hiếm nâng cấp h2c không mã hóa. Trình duyệt thương lượng HTTP/2 qua TLS ALPN, và bản thân HTTP/2 không có phản hồi 101.