इसका मतलब
सर्वर उस प्रोटोकॉल पर जाने को सहमत है जो क्लाइंट ने Upgrade हेडर में माँगा, अक्सर WebSocket। इस रिस्पॉन्स के बाद कनेक्शन नया प्रोटोकॉल इस्तेमाल करता है।
आम कारण
- WebSocket हैंडशेक सफल हुआ
- क्लाइंट ने h2c (बिना एन्क्रिप्शन वाला HTTP/2) अपग्रेड माँगा
- कोई कस्टम प्रोटोकॉल अपग्रेड स्वीकार हुआ
कैसे ठीक करें
अगर आप क्लाइंट या विज़िटर हैं
WebSocket के लिए 101 का मतलब सफलता है। अगर 101 की उम्मीद थी पर 200 या 400 मिला, तो जाँचें कि URL WebSocket एंडपॉइंट पर जाता है और प्रॉक्सी Upgrade व Connection हेडर आगे भेजते हैं।
अगर आप साइट या API चलाते हैं
nginx या लोड बैलेंसर के पीछे Upgrade और Connection को स्पष्ट रूप से पास करें (proxy_set_header Upgrade $http_upgrade; Connection "upgrade") और लंबे समय तक चलने वाले सॉकेट के लिए idle टाइमआउट बढ़ाएँ।
उदाहरण रिस्पॉन्स
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo= स्पेसिफ़िकेशन
अक्सर पूछे जाने वाले सवाल
› मेरा WebSocket 101 के बजाय 400 क्यों लौटाता है?
हैंडशेक हेडर गायब हैं या बदल दिए गए हैं, अक्सर किसी प्रॉक्सी ने Upgrade/Connection हटा दिए, या Sec-WebSocket-Key या वर्शन अमान्य है।
› क्या HTTP/2 में 101 इस्तेमाल होता है?
सिर्फ़ दुर्लभ बिना एन्क्रिप्शन वाले h2c अपग्रेड में। ब्राउज़र HTTP/2 को TLS ALPN से तय करते हैं, और HTTP/2 में खुद कोई 101 रिस्पॉन्स नहीं है।