Ne anlama gelir
Sunucu, istemcinin Upgrade başlığında istediği protokole, çoğunlukla WebSocket'e geçmeyi kabul eder. Bu yanıttan sonra bağlantı yeni protokolü konuşur.
Yaygın nedenler
- WebSocket el sıkışması başarılı oldu
- İstemci h2c (şifresiz HTTP/2) yükseltmesi istedi
- Özel bir protokol yükseltmesi kabul edildi
Nasıl düzeltilir
İstemci veya ziyaretçiyseniz
WebSocket için 101 başarı demektir. 101 beklerken 200 veya 400 aldıysanız URL'nin WebSocket uç noktasını gösterdiğini ve proxy'lerin Upgrade ile Connection başlıklarını ilettiğini kontrol edin.
Sitenin veya API'nin sahibiyseniz
nginx veya yük dengeleyici arkasında Upgrade ve Connection'ı açıkça iletin (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") ve uzun ömürlü soketler için boşta kalma sürelerini artırın.
Örnek yanıt
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= Belirtim
SSS
› WebSocket'im neden 101 yerine 400 döndürüyor?
El sıkışma başlıkları eksik veya değiştirilmiş; çoğu zaman Upgrade/Connection'ı silen bir proxy yüzünden, ya da Sec-WebSocket-Key veya sürüm geçersiz.
› HTTP/2 101 kullanır mı?
Yalnızca nadir görülen şifresiz h2c yükseltmesinde. Tarayıcılar HTTP/2'yi TLS ALPN ile anlaşır ve HTTP/2'nin kendisinde 101 yanıtı yoktur.