अद्यतन किया गया 2x
संक्षिप्त उत्तर: नहीं, केवल पथ और प्रोटोकॉल फ़ील्ड निर्दिष्ट किया जा सकता है।
दीर्घ उत्तर:
क्लाइंट / ब्राउज़र को भेजने के लिए अतिरिक्त हेडर निर्दिष्ट करने के लिए जावास्क्रिप्ट वेबस्केट्स एपीआई में कोई विधि नहीं है । HTTP पथ ("GET / xyz") और प्रोटोकॉल हेडर ("Sec-WebSocket-Protocol") को WebSocket कंस्ट्रक्टर में निर्दिष्ट किया जा सकता है।
Sec-WebSocket- प्रोटोकॉल हेडर (जिसे कभी-कभी वेबसोकेट विशिष्ट प्रमाणीकरण में उपयोग किए जाने के लिए विस्तारित किया जाता है) WebSocket कंस्ट्रक्टर के वैकल्पिक दूसरे तर्क से उत्पन्न होता है:
var ws = new WebSocket("ws://example.com/path", "protocol");
var ws = new WebSocket("ws://example.com/path", ["protocol1", "protocol2"]);
निम्नलिखित हेडर में उपरोक्त परिणाम:
Sec-WebSocket-Protocol: protocol
तथा
Sec-WebSocket-Protocol: protocol1, protocol2
WebSocket प्रमाणीकरण / प्राधिकरण को प्राप्त करने के लिए एक सामान्य पैटर्न एक टिकटिंग प्रणाली को लागू करना है जहाँ WebSocket क्लाइंट की मेजबानी करने वाला पृष्ठ सर्वर से टिकट का अनुरोध करता है और फिर इस टिकट को WebSocket कनेक्शन सेटअप के दौरान URL / क्वेरी स्ट्रिंग में प्रोटोकॉल क्षेत्र में पास करता है। या कनेक्शन स्थापित होने के बाद पहले संदेश के रूप में आवश्यक है। सर्वर तब केवल कनेक्शन को जारी रखने की अनुमति देता है यदि टिकट वैध है (मौजूद नहीं है, पहले से उपयोग नहीं किया गया है, ग्राहक आईपी टिकट मैचों में एन्कोडेड है, टिकट में टाइमस्टैम्प हाल ही में है, आदि)। यहाँ WebSocket सुरक्षा जानकारी का सारांश दिया गया है: https://devcenter.heroku.com/articles/websocket-ecurity
मूल प्रमाणीकरण पूर्व में एक विकल्प था, लेकिन इसे हटा दिया गया है और आधुनिक ब्राउज़र हेडर नहीं भेजते हैं भले ही वह निर्दिष्ट हो।
मूल प्रामाणिक जानकारी (पदावनत) :
प्राधिकरण शीर्ष लेख WebSocket URI के उपयोगकर्ता नाम और पासवर्ड (या सिर्फ उपयोगकर्ता नाम) क्षेत्र से उत्पन्न होता है:
var ws = new WebSocket("ws://username:password@example.com")
उपरोक्त शीर्षक में स्ट्रिंग "उपयोगकर्ता नाम: पासवर्ड" बेस 64 एनकोड के साथ परिणाम है:
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
मैंने क्रोम 55 और फ़ायरफ़ॉक्स 50 में बेसिक कोर का परीक्षण किया है और यह सत्यापित किया है कि मूल नॉर्म्स जानकारी वास्तव में सर्वर के साथ बातचीत की जाती है (यह सफारी में काम नहीं कर सकता है)।
मूल प्रमाणीकरण के लिए दिमित्री फ्रैंक के लिए धन्यवाद जवाब