वेब मैसेजिंग: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
{{HTML}} | {{HTML}} | ||
वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, [[WHATWG]] [[HTML5]] ड्राफ्ट विनिर्देश में | '''वेब मैसेजिंग''' या '''क्रॉस-डॉक्यूमेंट मैसेजिंग''', [[WHATWG|डब्ल्यूएचएटीडब्ल्यूजी]] [[HTML5|एचटीएमएल5]] ड्राफ्ट विनिर्देश में प्रस्तुत की गई [[एपीआई]] है, जो दस्तावेज़ों को विभिन्न मूल, या स्रोत डोमेन में दूसरे के साथ संचार करने की अनुमति देती है।<ref name="WHATWG"/> जबकि [[वेब ब्राउज़र]] में प्रस्तुत किया गया था। एचटीएमएल5 से पहले, सुरक्षा आक्रमण से बचाने के लिए, वेब ब्राउज़र [[ क्रॉस साइट स्क्रिप्टिंग |क्रॉस साइट स्क्रिप्टिंग]] की अनुमति नहीं देते थे। इस प्रथा ने गैर-शत्रुतापूर्ण पृष्ठों के बीच संचार पर भी रोक लगा दी थी, जिससे किसी भी प्रकार की दस्तावेज़ प्रदान करना कठिन हो गई थी।<ref name="WHATWG"/><ref name="WebKit"/> क्रॉस-डॉक्यूमेंट मैसेजिंग स्क्रिप्ट को सुरक्षा का प्राथमिक स्तर प्रदान करते हुए, इन सीमाओं के पार प्रदान करने की अनुमति देती है। | ||
==आवश्यकताएँ और विशेषताएँ== | ==आवश्यकताएँ और विशेषताएँ== | ||
मैसेजिंग एपीआई का उपयोग करना <code>postMessage</code> विधि, | मैसेजिंग एपीआई का उपयोग करना <code>postMessage</code> विधि, साधारण टेक्स्ट संदेश डोमेन से दूसरे डोमेन पर भेजा जा सकता है, उदाहरण. मूल दस्तावेज़ से [[IFRAME|आईफ़्रेम]] तक उपयोग किया जाता है।<ref name="INTRODUCING"/> इसके लिए आवश्यक है कि लेखक पहले इसे <code>Window</code> प्राप्त करे और प्राप्त दस्तावेज़ का उद्देश्य सही होता है। परिणामस्वरूप, संदेश निम्नलिखित पर पोस्ट किए जा सकते हैं:<ref name="WebKit"/> | ||
प्रेषक दस्तावेज़ की विंडो के अन्दर अन्य फ़्रेम या आईफ़्रेम | |||
* प्रेषक दस्तावेज़ स्पष्ट रूप से जावास्क्रिप्ट कॉल के माध्यम से खुलता है | * प्रेषक दस्तावेज़ स्पष्ट रूप से जावास्क्रिप्ट कॉल के माध्यम से खुलता है | ||
* प्रेषक दस्तावेज़ की मूल विंडो | * प्रेषक दस्तावेज़ की मूल विंडो | ||
* वह विंडो | * वह विंडो जिसमें प्रेषक दस्तावेज़ खुलता है | ||
संदेश <code>event</code> प्राप्त होने में निम्नलिखित विशेषताएं हैं: | संदेश <code>event</code> प्राप्त होने में निम्नलिखित विशेषताएं हैं: | ||
* <code>data</code> - आने वाले संदेश का डेटा, या वास्तविक | * <code>data</code> - आने वाले संदेश का डेटा, या वास्तविक कंटेंट। | ||
* <code>origin</code> - प्रेषक दस्तावेज़ की उत्पत्ति | * <code>origin</code> - प्रेषक दस्तावेज़ की उत्पत्ति इसमें सामान्यतः योजना, होस्टनाम और पोर्ट सम्मिलित होते हैं। इसमें पथ या खंड पहचानकर्ता सम्मिलित नहीं है.<ref name="WHATWG"/> | ||
*<code>source</code> - द <code>WindowProxy</code> दस्तावेज़ कहां से आया (स्रोत विंडो)। | |||
<code>postMessage</code> यह कोई ब्लॉकिंग कॉल नहीं है; संदेशों को अतुल्यकालिक रूप से संसाधित किया जाता है।<ref>{{Cite web|url=http://www.w3.org/TR/2010/WD-webmessaging-20101118/#web-messaging|title = HTML5 Web Messaging}}</ref> | <code>postMessage</code> यह कोई ब्लॉकिंग कॉल नहीं है; संदेशों को अतुल्यकालिक रूप से संसाधित किया जाता है।<ref>{{Cite web|url=http://www.w3.org/TR/2010/WD-webmessaging-20101118/#web-messaging|title = HTML5 Web Messaging}}</ref> | ||
==उदाहरण== | ==उदाहरण == | ||
विचार करें कि हम दस्तावेज़ ए को लोड करना चाहते हैं <code>example.net</code> से लोड किए गए दस्तावेज़ | विचार करें कि हम दस्तावेज़ ए को लोड करना चाहते हैं <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]; | ||
Line 62: | Line 65: | ||
==बाहरी संबंध== | ==बाहरी संबंध== | ||
* [http://www.w3.org/TR/2015/REC-webmessaging-20150519/ | * [http://www.w3.org/TR/2015/REC-webmessaging-20150519/ एचटीएमएल5 Web Messaging recommendation] | ||
* [http://dev.w3.org/html5/postmsg/ | * [http://dev.w3.org/html5/postmsg/ एचटीएमएल5 Web Messaging specification] | ||
* {{citation |url=http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#web-messaging |title=''Cross-Document Messaging – HTML Draft Standard'' |publisher=[[Web Hypertext Application Technology Working Group|WHATWG]]}} | * {{citation |url=http://www.whatwg.org/specs/web-apps/current-work/multipage/comms.html#web-messaging |title=''Cross-Document Messaging – HTML Draft Standard'' |publisher=[[Web Hypertext Application Technology Working Group|WHATWG]]}} | ||
* {{citation |url=https://developer.apple.com/library/mac/#documentation/AppleApplications/Conceptual/SafariJSProgTopics/Articles/Cross-documentmessaging.html |title=''WebKit DOM Programming Topics - Cross Document Messaging'' |publisher=Apple Developer Library |access-date=2013-12-29 |archive-date=2012-06-09 |archive-url=https://web.archive.org/web/20120609170929/http://developer.apple.com/library/mac/#documentation/AppleApplications/Conceptual/SafariJSProgTopics/Articles/Cross-documentmessaging.html |url-status=dead }} | * {{citation |url=https://developer.apple.com/library/mac/#documentation/AppleApplications/Conceptual/SafariJSProgTopics/Articles/Cross-documentmessaging.html |title=''WebKit DOM Programming Topics - Cross Document Messaging'' |publisher=Apple Developer Library |access-date=2013-12-29 |archive-date=2012-06-09 |archive-url=https://web.archive.org/web/20120609170929/http://developer.apple.com/library/mac/#documentation/AppleApplications/Conceptual/SafariJSProgTopics/Articles/Cross-documentmessaging.html |url-status=dead }} |
Revision as of 10:55, 16 July 2023
HTML |
---|
Comparisons |
वेब मैसेजिंग या क्रॉस-डॉक्यूमेंट मैसेजिंग, डब्ल्यूएचएटीडब्ल्यूजी एचटीएमएल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]
यह भी देखें
- क्रॉस साइट स्क्रिप्टिंग
- क्रॉस साइट अनुरोध जालसाजी
- समान-मूल नीति
- क्रॉस-ओरिजिन संसाधन साझाकरण
- 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]
बाहरी संबंध
- एचटीएमएल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