वेब मैसेजिंग: Difference between revisions
(Created page with "{{HTML}} वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, WHATWG HTML5 ड्राफ्ट वि...") |
No edit summary |
||
Line 1: | Line 1: | ||
{{HTML}} | {{HTML}} | ||
वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, [[WHATWG]] [[HTML5]] ड्राफ्ट विनिर्देश में पेश की गई | वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, [[WHATWG]] [[HTML5]] ड्राफ्ट विनिर्देश में पेश की गई [[एपीआई]] है, जो दस्तावेज़ों को विभिन्न मूल, या स्रोत डोमेन में दूसरे के साथ संचार करने की अनुमति देती है।<ref name="WHATWG"/>जबकि [[वेब ब्राउज़र]] में प्रस्तुत किया गया। HTML5 से पहले, सुरक्षा हमलों से बचाने के लिए, वेब ब्राउज़र [[ क्रॉस साइट स्क्रिप्टिंग |क्रॉस साइट स्क्रिप्टिंग]] की अनुमति नहीं देते थे। इस प्रथा ने गैर-शत्रुतापूर्ण पृष्ठों के बीच संचार पर भी रोक लगा दी, जिससे किसी भी प्रकार की दस्तावेज़ बातचीत मुश्किल हो गई।<ref name="WHATWG"/><ref name="WebKit"/>क्रॉस-डॉक्यूमेंट मैसेजिंग स्क्रिप्ट को सुरक्षा का प्राथमिक स्तर प्रदान करते हुए, इन सीमाओं के पार बातचीत करने की अनुमति देती है। | ||
==आवश्यकताएँ और विशेषताएँ== | ==आवश्यकताएँ और विशेषताएँ== | ||
मैसेजिंग एपीआई का उपयोग करना <code>postMessage</code> विधि, सादा पाठ संदेश | मैसेजिंग एपीआई का उपयोग करना <code>postMessage</code> विधि, सादा पाठ संदेश डोमेन से दूसरे डोमेन पर भेजा जा सकता है, उदा. मूल दस्तावेज़ से [[IFRAME]] तक।<ref name="INTRODUCING"/>इसके लिए आवश्यक है कि लेखक पहले इसे प्राप्त करे <code>Window</code> प्राप्त दस्तावेज़ का उद्देश्य। परिणामस्वरूप, संदेश निम्नलिखित पर पोस्ट किए जा सकते हैं:<ref name="WebKit"/>* प्रेषक दस्तावेज़ की विंडो के भीतर अन्य फ़्रेम या आईफ़्रेम | ||
* प्रेषक दस्तावेज़ स्पष्ट रूप से जावास्क्रिप्ट कॉल के माध्यम से खुलता है | * प्रेषक दस्तावेज़ स्पष्ट रूप से जावास्क्रिप्ट कॉल के माध्यम से खुलता है | ||
* प्रेषक दस्तावेज़ की मूल विंडो | * प्रेषक दस्तावेज़ की मूल विंडो | ||
Line 15: | Line 15: | ||
==उदाहरण== | ==उदाहरण== | ||
विचार करें कि हम दस्तावेज़ ए को लोड करना चाहते हैं <code>example.net</code> से लोड किए गए दस्तावेज़ बी के साथ संचार करने के लिए <code>example.com</code> | विचार करें कि हम दस्तावेज़ ए को लोड करना चाहते हैं <code>example.net</code> से लोड किए गए दस्तावेज़ बी के साथ संचार करने के लिए <code>example.com</code> में <code>iframe</code> या पॉपअप विंडो.<ref name="WHATWG"/>दस्तावेज़ A के लिए [[जावास्क्रिप्ट]] इस प्रकार दिखाई देगी: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
var o = document.getElementsByTagName('iframe')[0]; | var o = document.getElementsByTagName('iframe')[0]; | ||
o.contentWindow.postMessage('Hello B', 'http://example.com/'); | o.contentWindow.postMessage('Hello B', 'http://example.com/'); | ||
</syntaxhighlight> हमारी उत्पत्ति <code>contentWindow</code> ऑब्जेक्ट को पास कर दिया गया है <code>postMessage</code>. यह मेल खाना चाहिए <code>origin</code> जिस दस्तावेज़ के साथ हम संचार करना चाहते हैं (इस मामले में, दस्तावेज़ बी)। अन्यथा, | </syntaxhighlight> हमारी उत्पत्ति <code>contentWindow</code> ऑब्जेक्ट को पास कर दिया गया है <code>postMessage</code>. यह मेल खाना चाहिए <code>origin</code> जिस दस्तावेज़ के साथ हम संचार करना चाहते हैं (इस मामले में, दस्तावेज़ बी)। अन्यथा, सुरक्षा त्रुटि उत्पन्न हो जाएगी और स्क्रिप्ट बंद हो जाएगी।<ref name="INTRODUCING"/>दस्तावेज़ बी के लिए जावास्क्रिप्ट इस प्रकार दिखाई देगी: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
function receiver(event) { | function receiver(event) { | ||
Line 33: | Line 33: | ||
window.addEventListener('message', receiver, false); | window.addEventListener('message', receiver, false); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
दस्तावेज़ ए से संदेश प्राप्त करने के लिए | दस्तावेज़ ए से संदेश प्राप्त करने के लिए ईवेंट श्रोता की स्थापना की जाती है। का उपयोग करना <code>origin</code> संपत्ति, यह तब जाँचता है कि प्रेषक का डोमेन अपेक्षित डोमेन है। दस्तावेज़ बी तब संदेश को देखता है, या तो इसे उपयोगकर्ता को प्रदर्शित करता है, या दस्तावेज़ ए के लिए स्वयं के संदेश के साथ प्रतिक्रिया देता है।<ref name="WHATWG"/> | ||
==सुरक्षा== | ==सुरक्षा== | ||
खराब मूल जांच उन अनुप्रयोगों के लिए जोखिम पैदा कर सकती है जो क्रॉस-डॉक्यूमेंट मैसेजिंग का उपयोग करते हैं।<ref name="Security"/> | खराब मूल जांच उन अनुप्रयोगों के लिए जोखिम पैदा कर सकती है जो क्रॉस-डॉक्यूमेंट मैसेजिंग का उपयोग करते हैं।<ref name="Security"/> विदेशी डोमेन से दुर्भावनापूर्ण कोड से बचाव के लिए, लेखकों को इसकी जाँच करनी चाहिए <code>origin</code> यह सुनिश्चित करने के लिए विशेषता कि संदेश उन डोमेन से स्वीकार किए जाते हैं जिनसे वे संदेश प्राप्त करने की अपेक्षा करते हैं। आने वाले डेटा का प्रारूप भी जांचा जाना चाहिए कि वह अपेक्षित प्रारूप से मेल खाता हो।<ref name="WHATWG"/> | ||
==समर्थन== | ==समर्थन== | ||
क्रॉस-डॉक्यूमेंट मैसेजिंग के लिए समर्थन [[इंटरनेट एक्सप्लोरर]], [[मोज़िला फ़ायरफ़ॉक्स]], सफारी (वेब ब्राउज़र), Google क्रोम, ओपेरा (वेब ब्राउज़र), [[ ऑपेरा मिनी ]], [[ओपेरा मोबाइल]] और [[एंड्रॉइड (ऑपरेटिंग सिस्टम)]] के वर्तमान संस्करणों में मौजूद है।<ref name="canIuse"/>एपीआई के लिए समर्थन ट्राइडेंट (लेआउट इंजन), [[गेको (लेआउट इंजन)]], [[वेबकिट]] और [[प्रेस्टो (लेआउट इंजन)]] लेआउट इंजन में मौजूद है।<ref name="SUPPORT"/> | क्रॉस-डॉक्यूमेंट मैसेजिंग के लिए समर्थन [[इंटरनेट एक्सप्लोरर]], [[मोज़िला फ़ायरफ़ॉक्स]], सफारी (वेब ब्राउज़र), Google क्रोम, ओपेरा (वेब ब्राउज़र), [[ ऑपेरा मिनी |ऑपेरा मिनी]] , [[ओपेरा मोबाइल]] और [[एंड्रॉइड (ऑपरेटिंग सिस्टम)]] के वर्तमान संस्करणों में मौजूद है।<ref name="canIuse"/>एपीआई के लिए समर्थन ट्राइडेंट (लेआउट इंजन), [[गेको (लेआउट इंजन)]], [[वेबकिट]] और [[प्रेस्टो (लेआउट इंजन)]] लेआउट इंजन में मौजूद है।<ref name="SUPPORT"/> | ||
Line 69: | Line 69: | ||
* {{citation |url=http://caniuse.com/x-doc-messaging |title=''When can I use Cross-Document Messaging?'' |publisher=CanIUse}} | * {{citation |url=http://caniuse.com/x-doc-messaging |title=''When can I use Cross-Document Messaging?'' |publisher=CanIUse}} | ||
* {{citation |url=http://molly.com/html5/html5-0709.html |title=''A Selection of Supported Features in HTML5''}} | * {{citation |url=http://molly.com/html5/html5-0709.html |title=''A Selection of Supported Features in HTML5''}} | ||
[[Category: एचटीएमएल]] [[Category: एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस]] | [[Category: एचटीएमएल]] [[Category: एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस]] | ||
Revision as of 10:41, 16 July 2023
HTML |
---|
Comparisons |
वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, WHATWG HTML5 ड्राफ्ट विनिर्देश में पेश की गई एपीआई है, जो दस्तावेज़ों को विभिन्न मूल, या स्रोत डोमेन में दूसरे के साथ संचार करने की अनुमति देती है।[1]जबकि वेब ब्राउज़र में प्रस्तुत किया गया। HTML5 से पहले, सुरक्षा हमलों से बचाने के लिए, वेब ब्राउज़र क्रॉस साइट स्क्रिप्टिंग की अनुमति नहीं देते थे। इस प्रथा ने गैर-शत्रुतापूर्ण पृष्ठों के बीच संचार पर भी रोक लगा दी, जिससे किसी भी प्रकार की दस्तावेज़ बातचीत मुश्किल हो गई।[1][2]क्रॉस-डॉक्यूमेंट मैसेजिंग स्क्रिप्ट को सुरक्षा का प्राथमिक स्तर प्रदान करते हुए, इन सीमाओं के पार बातचीत करने की अनुमति देती है।
आवश्यकताएँ और विशेषताएँ
मैसेजिंग एपीआई का उपयोग करना postMessage
विधि, सादा पाठ संदेश डोमेन से दूसरे डोमेन पर भेजा जा सकता है, उदा. मूल दस्तावेज़ से IFRAME तक।[3]इसके लिए आवश्यक है कि लेखक पहले इसे प्राप्त करे Window
प्राप्त दस्तावेज़ का उद्देश्य। परिणामस्वरूप, संदेश निम्नलिखित पर पोस्ट किए जा सकते हैं:[2]* प्रेषक दस्तावेज़ की विंडो के भीतर अन्य फ़्रेम या आईफ़्रेम
- प्रेषक दस्तावेज़ स्पष्ट रूप से जावास्क्रिप्ट कॉल के माध्यम से खुलता है
- प्रेषक दस्तावेज़ की मूल विंडो
- वह विंडो जिसने प्रेषक दस्तावेज़ खोला
संदेश event
प्राप्त होने में निम्नलिखित विशेषताएं हैं:
data
- आने वाले संदेश का डेटा, या वास्तविक सामग्री।origin
- प्रेषक दस्तावेज़ की उत्पत्ति. इसमें आम तौर पर योजना, होस्टनाम और पोर्ट शामिल होते हैं। इसमें पथ या खंड पहचानकर्ता शामिल नहीं है.[1]*source
- दWindowProxy
दस्तावेज़ कहां से आया (स्रोत विंडो)।
postMessage
यह कोई ब्लॉकिंग कॉल नहीं है; संदेशों को अतुल्यकालिक रूप से संसाधित किया जाता है।[4]
उदाहरण
विचार करें कि हम दस्तावेज़ ए को लोड करना चाहते हैं example.net
से लोड किए गए दस्तावेज़ बी के साथ संचार करने के लिए example.com
में iframe
या पॉपअप विंडो.[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]
यह भी देखें
- क्रॉस साइट स्क्रिप्टिंग
- क्रॉस साइट अनुरोध जालसाजी
- समान-मूल नीति
- क्रॉस-ओरिजिन संसाधन साझाकरण
- JSONP
संदर्भ
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Cross-Document Messaging – HTML Draft Standard
- ↑ 2.0 2.1 WebKit DOM Programming Topics - Cross Document Messaging[dead link]
- ↑ 3.0 3.1 Remy, Sharp, Messages, Workers, and Sockets, Introducing HTML5, New Riders, 2011, p. 197-199
- ↑ "HTML5 Web Messaging".
- ↑ HTML5 Security in a Nutshell
- ↑ When can I use Cross-Document Messaging?
- ↑ A Selection of Supported Features in HTML5[dead link]
बाहरी संबंध
- HTML5 Web Messaging recommendation
- HTML5 Web Messaging specification
- Cross-Document Messaging – HTML Draft Standard, WHATWG
- WebKit DOM Programming Topics - Cross Document Messaging, Apple Developer Library, archived from the original on 2012-06-09, retrieved 2013-12-29
- Eng, Chris (2010-05-17), HTML5 Security in a Nutshell, Veracode
- When can I use Cross-Document Messaging?, CanIUse
- A Selection of Supported Features in HTML5