ماذا يعني
يوافق الخادم على التحول إلى البروتوكول الذي طلبه العميل في ترويسة Upgrade، وغالبًا ما يكون WebSocket. بعد هذه الاستجابة يستخدم الاتصال البروتوكول الجديد.
الأسباب الشائعة
- نجحت مصافحة WebSocket
- طلب العميل الترقية إلى h2c (HTTP/2 دون تشفير)
- قُبلت ترقية إلى بروتوكول مخصص
طريقة الإصلاح
إن كنت العميل أو الزائر
بالنسبة إلى WebSocket تعني 101 النجاح. إذا توقعت 101 وحصلت على 200 أو 400، فتحقق من أن العنوان يشير إلى نقطة نهاية WebSocket وأن الخوادم الوكيلة تمرر ترويستي Upgrade وConnection.
إن كنت مسؤولًا عن الموقع أو الواجهة البرمجية
خلف nginx أو موازن تحميل، مرّر Upgrade وConnection صراحةً (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") وارفع مهلات الخمول للمقابس طويلة العمر.
مثال على الاستجابة
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= المواصفة
الأسئلة الشائعة
› لماذا يعيد WebSocket الخاص بي 400 بدل 101؟
ترويسات المصافحة مفقودة أو معدّلة، غالبًا بسبب خادم وكيل يحذف Upgrade/Connection، أو أن Sec-WebSocket-Key أو الإصدار غير صالح.
› هل يستخدم HTTP/2 الرمز 101؟
فقط في ترقية h2c غير المشفرة النادرة. تتفاوض المتصفحات على HTTP/2 عبر TLS ALPN، ولا توجد استجابة 101 في HTTP/2 نفسه.