वेब मैसेजिंग: Difference between revisions
No edit summary |
No edit summary |
||
Line 18: | Line 18: | ||
==उदाहरण == | ==उदाहरण == | ||
विचार करें कि हम दस्तावेज़ | विचार करें कि हम दस्तावेज़ a को लोड करना चाहते हैं <code>example.net</code> से लोड किए गए दस्तावेज़ B के साथ संचार करने के लिए <code>example.com</code> में <code>आईफ़्रेम</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> | </syntaxhighlight> हमारी उत्पत्ति <code>contentWindow</code> ऑब्जेक्ट को पास कर दिया गया है यह मेल <code>postMessage</code> खाना चाहिए जिस दस्तावेज़ <code>origin</code> के साथ हम संचार करना चाहते हैं (इस स्थिति में, दस्तावेज़ b) अन्यथा, सुरक्षा त्रुटि उत्पन्न हो जाएगी और स्क्रिप्ट विवृत हो जाती है <ref name="INTRODUCING"/> दस्तावेज़ b के लिए जावास्क्रिप्ट इस प्रकार दिखाई देती है: | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
function receiver(event) { | function receiver(event) { | ||
Line 36: | Line 36: | ||
window.addEventListener('message', receiver, false); | window.addEventListener('message', receiver, false); | ||
</syntaxhighlight> | </syntaxhighlight> | ||
दस्तावेज़ | दस्तावेज़ a से संदेश प्राप्त करने के लिए ईवेंट श्रोता की स्थापना की जाती है। का उपयोग करना <code>origin</code> प्रोपर्टी, यह तब जाँचता है कि प्रेषक का डोमेन अपेक्षित डोमेन है। दस्तावेज़ b तब संदेश को देखता है, या तो इसे उपयोगकर्ता को प्रदर्शित करता है, या दस्तावेज़ a के लिए स्वयं के संदेश के साथ प्रतिक्रिया देता है।<ref name="WHATWG"/> | ||
==सुरक्षा== | ==सुरक्षा== | ||
व्यर्थ मूल जांच उन अनुप्रयोगों के लिए कठिन परिस्थिति उत्पन्न कर सकती है जो क्रॉस-डॉक्यूमेंट मैसेजिंग का उपयोग करते हैं।<ref name="Security"/> विदेशी डोमेन से दुर्भावनापूर्ण कोड से बचाव के लिए, लेखकों <code>origin</code> को इसकी जाँच करनी चाहिए यह सुनिश्चित करने के लिए विशेषता कि संदेश उन डोमेन से स्वीकार किए जाते हैं जिनसे वे संदेश प्राप्त करने की अपेक्षा करते हैं। इस प्रकार आने वाले डेटा का प्रारूप भी जांचा जाना चाहिए कि वह अपेक्षित प्रारूप से मेल खाता हो।<ref name="WHATWG"/> | |||
==समर्थन== | ==समर्थन== | ||
क्रॉस-डॉक्यूमेंट मैसेजिंग के लिए समर्थन [[इंटरनेट एक्सप्लोरर]], [[मोज़िला फ़ायरफ़ॉक्स]], सफारी (वेब ब्राउज़र), | क्रॉस-डॉक्यूमेंट मैसेजिंग के लिए समर्थन [[इंटरनेट एक्सप्लोरर]], [[मोज़िला फ़ायरफ़ॉक्स]], सफारी (वेब ब्राउज़र), गूगल क्रोम, ओपेरा (वेब ब्राउज़र), [[ ऑपेरा मिनी |ऑपेरा मिनी]] , [[ओपेरा मोबाइल]] और [[एंड्रॉइड (ऑपरेटिंग सिस्टम)]] के वर्तमान संस्करणों में उपस्थित है।<ref name="canIuse"/> इस प्रकार प्एरकारपीआई के लिए समर्थन ट्राइडेंट (लेआउट इंजन), [[गेको (लेआउट इंजन)]], [[वेबकिट]] और [[प्रेस्टो (लेआउट इंजन)]] लेआउट इंजन में उपस्थित है।<ref name="SUPPORT"/> | ||
==यह भी देखें== | ==यह भी देखें == | ||
* क्रॉस साइट स्क्रिप्टिंग | * क्रॉस साइट स्क्रिप्टिंग | ||
* [[क्रॉस साइट अनुरोध जालसाजी]] | * [[क्रॉस साइट अनुरोध जालसाजी]] | ||
* समान-मूल नीति | * समान-मूल नीति | ||
* [[क्रॉस-ओरिजिन संसाधन साझाकरण]] | * [[क्रॉस-ओरिजिन संसाधन साझाकरण]] | ||
* [[JSONP]] | * [[JSONP|जेएसओएनपी]] | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 11:09, 16 July 2023
HTML |
---|
Comparisons |
वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, डब्ल्यूएचएटीडब्ल्यूजी एचटीएमएल5 ड्राफ्ट विनिर्देश में प्रस्तुत की गई एपीआई है, जो दस्तावेज़ों को विभिन्न मूल, या स्रोत डोमेन में दूसरे के साथ संचार करने की अनुमति देती है।[1] जबकि वेब ब्राउज़र में प्रस्तुत किया गया था। एचटीएमएल5 से पहले, सुरक्षा आक्रमण से बचाने के लिए, वेब ब्राउज़र क्रॉस साइट स्क्रिप्टिंग की अनुमति नहीं देते थे। इस प्रथा ने गैर-शत्रुतापूर्ण पृष्ठों के बीच संचार पर भी रोक लगा दी थी, जिससे किसी भी प्रकार की दस्तावेज़ प्रदान करना कठिन हो गई थी।[1][2] क्रॉस-डॉक्यूमेंट मैसेजिंग स्क्रिप्ट को सुरक्षा का प्राथमिक स्तर प्रदान करते हुए, इन सीमाओं के पार प्रदान करने की अनुमति देती है।
आवश्यकताएँ और विशेषताएँ
मैसेजिंग एपीआई का उपयोग करना postMessage
विधि, साधारण टेक्स्ट संदेश डोमेन से दूसरे डोमेन पर भेजा जा सकता है, उदाहरण. मूल दस्तावेज़ से आईफ़्रेम तक उपयोग किया जाता है।[3] इसके लिए आवश्यक है कि लेखक पहले इसे Window
प्राप्त करे और प्राप्त दस्तावेज़ का उद्देश्य सही होता है। परिणामस्वरूप, संदेश निम्नलिखित पर पोस्ट किए जा सकते हैं:[2]
प्रेषक दस्तावेज़ की विंडो के अन्दर अन्य फ़्रेम या आईफ़्रेम
- प्रेषक दस्तावेज़ स्पष्ट रूप से जावास्क्रिप्ट कॉल के माध्यम से खुलता है
- प्रेषक दस्तावेज़ की मूल विंडो
- वह विंडो जिसमें प्रेषक दस्तावेज़ खुलता है
संदेश event
प्राप्त होने में निम्नलिखित विशेषताएं हैं:
data
- आने वाले संदेश का डेटा, या वास्तविक कंटेंट।origin
- प्रेषक दस्तावेज़ की उत्पत्ति इसमें सामान्यतः योजना, होस्टनाम और पोर्ट सम्मिलित होते हैं। इसमें पथ या खंड पहचानकर्ता सम्मिलित नहीं है.[1]source
- दWindowProxy
दस्तावेज़ कहां से आया (स्रोत विंडो)।
postMessage
यह कोई ब्लॉकिंग कॉल नहीं है; संदेशों को अतुल्यकालिक रूप से संसाधित किया जाता है।[4]
उदाहरण
विचार करें कि हम दस्तावेज़ a को लोड करना चाहते हैं example.net
से लोड किए गए दस्तावेज़ B के साथ संचार करने के लिए example.com
में आईफ़्रेम
या पॉपअप विंडो [1] दस्तावेज़ A के लिए जावास्क्रिप्ट इस प्रकार दिखाई देती है:
var o = document.getElementsByTagName('iframe')[0];
o.contentWindow.postMessage('Hello B', 'http://example.com/');
हमारी उत्पत्ति contentWindow
ऑब्जेक्ट को पास कर दिया गया है यह मेल postMessage
खाना चाहिए जिस दस्तावेज़ origin
के साथ हम संचार करना चाहते हैं (इस स्थिति में, दस्तावेज़ b) अन्यथा, सुरक्षा त्रुटि उत्पन्न हो जाएगी और स्क्रिप्ट विवृत हो जाती है [3] दस्तावेज़ b के लिए जावास्क्रिप्ट इस प्रकार दिखाई देती है:
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);
दस्तावेज़ a से संदेश प्राप्त करने के लिए ईवेंट श्रोता की स्थापना की जाती है। का उपयोग करना origin
प्रोपर्टी, यह तब जाँचता है कि प्रेषक का डोमेन अपेक्षित डोमेन है। दस्तावेज़ b तब संदेश को देखता है, या तो इसे उपयोगकर्ता को प्रदर्शित करता है, या दस्तावेज़ a के लिए स्वयं के संदेश के साथ प्रतिक्रिया देता है।[1]
सुरक्षा
व्यर्थ मूल जांच उन अनुप्रयोगों के लिए कठिन परिस्थिति उत्पन्न कर सकती है जो क्रॉस-डॉक्यूमेंट मैसेजिंग का उपयोग करते हैं।[5] विदेशी डोमेन से दुर्भावनापूर्ण कोड से बचाव के लिए, लेखकों origin
को इसकी जाँच करनी चाहिए यह सुनिश्चित करने के लिए विशेषता कि संदेश उन डोमेन से स्वीकार किए जाते हैं जिनसे वे संदेश प्राप्त करने की अपेक्षा करते हैं। इस प्रकार आने वाले डेटा का प्रारूप भी जांचा जाना चाहिए कि वह अपेक्षित प्रारूप से मेल खाता हो।[1]
समर्थन
क्रॉस-डॉक्यूमेंट मैसेजिंग के लिए समर्थन इंटरनेट एक्सप्लोरर, मोज़िला फ़ायरफ़ॉक्स, सफारी (वेब ब्राउज़र), गूगल क्रोम, ओपेरा (वेब ब्राउज़र), ऑपेरा मिनी , ओपेरा मोबाइल और एंड्रॉइड (ऑपरेटिंग सिस्टम) के वर्तमान संस्करणों में उपस्थित है।[6] इस प्रकार प्एरकारपीआई के लिए समर्थन ट्राइडेंट (लेआउट इंजन), गेको (लेआउट इंजन), वेबकिट और प्रेस्टो (लेआउट इंजन) लेआउट इंजन में उपस्थित है।[7]
यह भी देखें
- क्रॉस साइट स्क्रिप्टिंग
- क्रॉस साइट अनुरोध जालसाजी
- समान-मूल नीति
- क्रॉस-ओरिजिन संसाधन साझाकरण
- जेएसओएनपी
संदर्भ
- ↑ 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]
बाहरी संबंध
- एचटीएमएल5 Web Messaging recommendation
- एचटीएमएल5 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