2008-11-27 9 views
6

जो मैं समझता हूं, वर्तमान ब्राउज़र में "समान मूल नीति" प्रवर्तन के कारण, जावास्क्रिप्ट के मूल डोमेन की तुलना में किसी भिन्न डोमेन पर भेजे गए XmlHttpRequest से डेटा प्राप्त करना असंभव है।क्लाइंट-साइड स्क्रिप्ट से दूरस्थ वेब सेवाओं का उपभोग कैसे किया जा सकता है?

मेरे पास इस मामले के बारे में शून्य अनुभव है, इसलिए मैं वेब सेवाओं को जावास्क्रिप्ट से अनुपयोगी होने के बारे में उलझन में हूं। क्या इसका मतलब यह है कि अजाक्स कार्यक्षमता वाले वेब एप्लिकेशन अन्य डोमेन द्वारा प्रदान की जाने वाली सेवाओं को कॉल किए बिना ही स्वयं से बातचीत कर सकते हैं? "मैश-अप" कैसे काम करते हैं? मुझे लगता है कि सेवाओं को सर्वर-साइड का उपभोग किया जाता है, फिर डेटा स्थानीय अजाक्स कॉल के माध्यम से ग्राहक को पास किया जाता है। मुझे नहीं पता।

क्लाइंट-साइड उपभोग सेवाओं को प्राप्त करने के लिए एकमात्र तरीका मैं कल्पना कर सकता हूं कि सीधे वेब सेवा के डोमेन से <script> टैग के माध्यम से जावास्क्रिप्ट फ़ाइल को पुनर्प्राप्त करना होगा, फिर दूरस्थ डोमेन के साथ बातचीत करने के लिए अपने एपीआई का उपयोग करें।

क्या कोई मुझे प्रबुद्ध कर सकता है?

+0

वास्तव में आपके पास इसका बहुत अच्छा समझ है। बस याद रखें अजाक्स सादा पुराना http है। –

+0

हाँ, आपने इसे सीधे सिर पर मारा ... आसपास के काम सहित! –

उत्तर

6

अपने प्रश्न में अपने उल्लेख किया < स्क्रिप्ट > चाल। जेएसओएनपी उस पर आधारित है। It was formally proposed almost 3 years ago by Bob Ippolito। यह आपको स्क्रिप्ट — की उत्पत्ति से बात करने का अधिकार नहीं देता है, मूल को आपके वेब पेज द्वारा परिभाषित किया गया है, न कि इसमें और क्या शामिल है। यह केवल इसलिए काम करता है क्योंकि सर्वर जेएसओएन को कैलबैक फ़ंक्शन में लपेटता है, जिसे आपके कोड में परिभाषित किया जाना चाहिए, और लोड होने पर < स्क्रिप्ट > द्वारा निष्पादित किया जाएगा। जेएसओएनपी का सबसे प्रसिद्ध उदाहरण फ्लिकर सहित याहू सेवाएं होगी।

एक और तकनीक जानकारी स्थानांतरित करने के लिए window.name का उपयोग करना है। This technique was detailed by Kris Zyp four month ago। इसके अतिरिक्त उसका आलेख JSONP के साथ window.name परिवहन की तुलना करता है। मुझे कोई भी उच्च प्रोफ़ाइल सेवा प्रदाता नहीं पता जो इस नए परिवहन का समर्थन करता है। जाहिर है यह समय के साथ बदल जाएगा।

बेशक, मुझे आने वाले Microsoft XDomainRequest का उल्लेख करना चाहिए। आईई 8 के साथ शिप करने की योजना बनाई जा रही है, और इसका समर्थन करने के लिए कोई अन्य विक्रेता प्रतिबद्ध नहीं है, लेकिन इसे एचटीएमएल 5 में शामिल करने के लिए प्रस्तुत किया गया था। एक्सडीआर कार्यक्षमता का एक उपयोगी टुकड़ा है, लेकिन मुझे संदेह है कि इसे कई बार बदल दिया जाएगा स्वीकार किए जाते हैं।

यदि आपने उन लिंकों को देखा जो आपको शायद अब तक पता है कि इन सभी विधियों को किसी तृतीय-पक्ष सर्वर से सहयोग के एक निश्चित स्तर की आवश्यकता होती है। आप इच्छानुसार यादृच्छिक सेवाओं का उपयोग नहीं कर सकते हैं। यदि आपको एक असंगत सेवा का उपयोग करना है, तो केवल एक ही समाधान है कि आप अपने स्वयं के सर्वर से सभी संबंधित समस्याओं के साथ प्रॉक्सी करें: संदिग्ध वैधता, कम प्रदर्शन, आपके सर्वर पर बढ़ी हुई लोड, उपयोगकर्ता के ब्राउज़र के बीच कनेक्शन की कम संख्या और आपका सर्वर, और इसी तरह से।

3

JSONP पर एक नज़र है, जो काफी दृष्टिकोण आप का वर्णन कर रहे हैं का उपयोग कर एक ही मूल नीति के आसपास काम करता है, बस सुनिश्चित करें कि आप पर भरोसा है जहां आप इसे से प्राप्त कर ...

+0

धन्यवाद, मैं JSONP के बारे में कुछ शोध करूंगा। – Franck

संबंधित मुद्दे