TrueURL
TrueURL

Menü

101 Switching Protocols

Sunucu, istemcinin Upgrade isteğini kabul eder ve bu bağlantıyı başka bir protokole geçirir; pratikte bu neredeyse her zaman WebSocket'tir.

Neden ifadesi
Switching Protocols
Yönlendirme
Hayır
Varsayılan olarak önbelleğe alınabilir
Hayır

101 Switching Protocols, sunucunun istemcinin gönderdiği Upgrade istek başlığını kabul ettiği anlamına gelir. 101 yanıtını sonlandıran boş satırın hemen ardından iki taraf da bu bağlantı üzerinden farklı bir protokolle konuşur. Yanıt, yeni protokolü belirten bir Upgrade başlığı içermelidir.

Bugün bu neredeyse her zaman WebSocket el sıkışmasıdır. Tarayıcı Upgrade: websocket, Connection: Upgrade ve bir Sec-WebSocket-Key içeren bir GET isteği gönderir. Sunucu, buna karşılık gelen Sec-WebSocket-Accept ile 101 yanıtı verir ve o andan itibaren iki taraf WebSocket çerçeveleri alışverişi yapar. 101, şifrelenmemiş (cleartext) HTTP/1.1'den HTTP/2'ye h2c yükseltmesi için de kullanılıyordu; bu yöntem artık kullanımdan kaldırılmıştır. Tarayıcılar bunun yerine HTTP/2 ve HTTP/3'ü TLS el sıkışması sırasında (ALPN ile) müzakere eder.

Upgrade mekanizması yalnızca HTTP/1.1'de vardır. HTTP/2 ve HTTP/3 hiçbir zaman 101 göndermez; bu protokoller üzerindeki WebSocket bağlantıları genişletilmiş CONNECT (RFC 8441 ve RFC 9220) kullanır.

Örnek yanıt

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

SEO ve yönlendirme kontrolü

101 hiçbir zaman sıradan bir sayfa isteğinin sonucu değildir. Tarayıcılar ve tarama botları bu kodu yalnızca bağlantının yükseltilmesini açıkça istediklerinde alır; bu nedenle dizine eklemeye hiçbir etkisi yoktur. Bir yönlendirme kontrol aracı düz GET, HEAD veya POST istekleri gönderir ve 101 görmez. Bir WebSocket uç noktası normal bir URL gibi kontrol edilirse genellikle 426 Upgrade Required veya 400 Bad Request gibi bir 4xx koduyla yanıt verir.

Yaygın nedenler ve kullanım alanları

  • Bir tarayıcı WebSocket bağlantısı açar (new WebSocket('wss://...')) ve sunucu el sıkışmayı kabul eder.
  • Bir istemci, kullanımdan kaldırılmış h2c yükseltmesiyle şifrelenmemiş HTTP/2'ye geçmek ister ve sunucu bunu destekler.
  • WebSocket bağlantıları bir ters proxy arkasında başarısız oluyor, çünkü proxy Upgrade ve Connection başlıklarını iletmiyor. nginx'te proxy_http_version 1.1 ayarını yapın ve her iki başlığı da arka uca (backend) iletin.

URL yönlendirme kontrolü

Ücretsiz TrueURL yönlendirme kontrol aracıyla bir URL'nin döndürdüğü tüm durum kodlarını adım adım görün.