Artinya
Server setuju beralih ke protokol yang diminta klien di header Upgrade, paling sering WebSocket. Setelah respons ini koneksi memakai protokol baru.
Penyebab umum
- Handshake WebSocket berhasil
- Klien meminta upgrade h2c (HTTP/2 tanpa enkripsi)
- Upgrade protokol kustom diterima
Cara memperbaiki
Sebagai klien atau pengunjung
Untuk WebSocket, 101 berarti berhasil. Jika mengharapkan 101 tetapi mendapat 200 atau 400, pastikan URL mengarah ke endpoint WebSocket dan proxy meneruskan header Upgrade serta Connection.
Sebagai pengelola situs atau API
Di belakang nginx atau load balancer, teruskan Upgrade dan Connection secara eksplisit (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") dan naikkan batas waktu idle untuk socket yang berumur panjang.
Contoh respons
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Spesifikasi
FAQ
› Mengapa WebSocket saya mengembalikan 400, bukan 101?
Header handshake hilang atau diubah, sering oleh proxy yang membuang Upgrade/Connection, atau Sec-WebSocket-Key maupun versinya tidak valid.
› Apakah HTTP/2 memakai 101?
Hanya untuk upgrade h2c tanpa enkripsi yang jarang dipakai. Browser menegosiasikan HTTP/2 lewat TLS ALPN, dan HTTP/2 sendiri tidak punya respons 101.