वेब मैसेजिंग

From Vigyanwiki
Revision as of 10:55, 16 July 2023 by alpha>Akanksha

वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, डब्ल्यूएचएटीडब्ल्यूजी एचटीएमएल5 ड्राफ्ट विनिर्देश में प्रस्तुत की गई एपीआई है, जो दस्तावेज़ों को विभिन्न मूल, या स्रोत डोमेन में दूसरे के साथ संचार करने की अनुमति देती है।[1] जबकि वेब ब्राउज़र में प्रस्तुत किया गया था। एचटीएमएल5 से पहले, सुरक्षा आक्रमण से बचाने के लिए, वेब ब्राउज़र क्रॉस साइट स्क्रिप्टिंग की अनुमति नहीं देते थे। इस प्रथा ने गैर-शत्रुतापूर्ण पृष्ठों के बीच संचार पर भी रोक लगा दी थी, जिससे किसी भी प्रकार की दस्तावेज़ प्रदान करना कठिन हो गई थी।[1][2] क्रॉस-डॉक्यूमेंट मैसेजिंग स्क्रिप्ट को सुरक्षा का प्राथमिक स्तर प्रदान करते हुए, इन सीमाओं के पार प्रदान करने की अनुमति देती है।

आवश्यकताएँ और विशेषताएँ

मैसेजिंग एपीआई का उपयोग करना postMessage विधि, साधारण टेक्स्ट संदेश डोमेन से दूसरे डोमेन पर भेजा जा सकता है, उदाहरण. मूल दस्तावेज़ से आईफ़्रेम तक उपयोग किया जाता है।[3] इसके लिए आवश्यक है कि लेखक पहले इसे Window प्राप्त करे और प्राप्त दस्तावेज़ का उद्देश्य सही होता है। परिणामस्वरूप, संदेश निम्नलिखित पर पोस्ट किए जा सकते हैं:[2]

प्रेषक दस्तावेज़ की विंडो के अन्दर अन्य फ़्रेम या आईफ़्रेम

  • प्रेषक दस्तावेज़ स्पष्ट रूप से जावास्क्रिप्ट कॉल के माध्यम से खुलता है
  • प्रेषक दस्तावेज़ की मूल विंडो
  • वह विंडो जिसमें प्रेषक दस्तावेज़ खुलता है

संदेश event प्राप्त होने में निम्नलिखित विशेषताएं हैं:

  • data - आने वाले संदेश का डेटा, या वास्तविक कंटेंट।
  • origin - प्रेषक दस्तावेज़ की उत्पत्ति इसमें सामान्यतः योजना, होस्टनाम और पोर्ट सम्मिलित होते हैं। इसमें पथ या खंड पहचानकर्ता सम्मिलित नहीं है.[1]
  • source - द WindowProxy दस्तावेज़ कहां से आया (स्रोत विंडो)।

postMessage यह कोई ब्लॉकिंग कॉल नहीं है; संदेशों को अतुल्यकालिक रूप से संसाधित किया जाता है।[4]


उदाहरण

विचार करें कि हम दस्तावेज़ ए को लोड करना चाहते हैं example.net से लोड किए गए दस्तावेज़ B के साथ संचार करने के लिए example.com में आईफ़्रेम या पॉपअप विंडो.[1] दस्तावेज़ A के लिए जावास्क्रिप्ट इस प्रकार दिखाई देगी:

var o = document.getElementsByTagName('iframe')[0];
o.contentWindow.postMessage('Hello B', 'http://example.com/');

हमारी उत्पत्ति contentWindow ऑब्जेक्ट को पास कर दिया गया है postMessage. यह मेल खाना चाहिए origin जिस दस्तावेज़ के साथ हम संचार करना चाहते हैं (इस मामले में, दस्तावेज़ बी)। अन्यथा, सुरक्षा त्रुटि उत्पन्न हो जाएगी और स्क्रिप्ट बंद हो जाएगी।[3]दस्तावेज़ बी के लिए जावास्क्रिप्ट इस प्रकार दिखाई देगी:

function receiver(event) {
    if (event.origin == 'http://example.net') {
        if (event.data == 'Hello B') {
            event.source.postMessage('Hello A, how are you?', event.origin);
        }
        else {
            alert(event.data);
        }
    }
}
window.addEventListener('message', receiver, false);

दस्तावेज़ ए से संदेश प्राप्त करने के लिए ईवेंट श्रोता की स्थापना की जाती है। का उपयोग करना origin संपत्ति, यह तब जाँचता है कि प्रेषक का डोमेन अपेक्षित डोमेन है। दस्तावेज़ बी तब संदेश को देखता है, या तो इसे उपयोगकर्ता को प्रदर्शित करता है, या दस्तावेज़ ए के लिए स्वयं के संदेश के साथ प्रतिक्रिया देता है।[1]


सुरक्षा

खराब मूल जांच उन अनुप्रयोगों के लिए जोखिम पैदा कर सकती है जो क्रॉस-डॉक्यूमेंट मैसेजिंग का उपयोग करते हैं।[5] विदेशी डोमेन से दुर्भावनापूर्ण कोड से बचाव के लिए, लेखकों को इसकी जाँच करनी चाहिए origin यह सुनिश्चित करने के लिए विशेषता कि संदेश उन डोमेन से स्वीकार किए जाते हैं जिनसे वे संदेश प्राप्त करने की अपेक्षा करते हैं। आने वाले डेटा का प्रारूप भी जांचा जाना चाहिए कि वह अपेक्षित प्रारूप से मेल खाता हो।[1]


समर्थन

क्रॉस-डॉक्यूमेंट मैसेजिंग के लिए समर्थन इंटरनेट एक्सप्लोरर, मोज़िला फ़ायरफ़ॉक्स, सफारी (वेब ​​​​ब्राउज़र), Google क्रोम, ओपेरा (वेब ​​​​ब्राउज़र), ऑपेरा मिनी , ओपेरा मोबाइल और एंड्रॉइड (ऑपरेटिंग सिस्टम) के वर्तमान संस्करणों में मौजूद है।[6]एपीआई के लिए समर्थन ट्राइडेंट (लेआउट इंजन), गेको (लेआउट इंजन), वेबकिट और प्रेस्टो (लेआउट इंजन) लेआउट इंजन में मौजूद है।[7]


यह भी देखें

संदर्भ

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Cross-Document Messaging – HTML Draft Standard
  2. 2.0 2.1 WebKit DOM Programming Topics - Cross Document Messaging[dead link]
  3. 3.0 3.1 Remy, Sharp, Messages, Workers, and Sockets, Introducing HTML5, New Riders, 2011, p. 197-199
  4. "HTML5 Web Messaging".
  5. HTML5 Security in a Nutshell
  6. When can I use Cross-Document Messaging?
  7. A Selection of Supported Features in HTML5[dead link]


बाहरी संबंध