Relaxing the same-origin policy
कुछ परिस्थितियों में एक ही मूल नीति भी प्रतिबंधक, बड़े वेबसाइटों है कि अधिक उप डोमेन का उपयोग के लिए समस्याएं खड़ी है। यहाँ यह आराम करने के लिए चार तकनीकें हैं:
document.domain property
तो दो खिड़कियां (या फ्रेम) स्क्रिप्ट है कि एक ही मूल्य के लिए डोमेन निर्धारित होते हैं, एक ही मूल नीति इन दो खिड़कियों के लिए आराम है, और प्रत्येक खिड़की कर सकते हैं दूसरे के साथ बातचीत करें। उदाहरण के लिए, order.example.com और catalog.example.com से लोड किए गए दस्तावेज़ों में स्क्रिप्ट को सहयोग करने से उनके दस्तावेज़.डोमेन गुण "example.com" पर सेट हो सकते हैं, जिससे दस्तावेजों को एक ही उत्पत्ति दिखाई दे और प्रत्येक दस्तावेज़ को पढ़ने में सक्षम बनाया जा सके। दूसरे के गुण। यह हमेशा काम नहीं कर सकता क्योंकि आंतरिक प्रतिनिधित्व में संग्रहीत पोर्ट को शून्य के रूप में चिह्नित किया जा सकता है। दूसरे शब्दों में example.com पोर्ट 80 example.com पोर्ट नल बन जाएगा क्योंकि हम document.domain
अपडेट करते हैं। पोर्ट नल को 80 के रूप में नहीं माना जा सकता है (आपके ब्राउज़र के आधार पर) और इसलिए आपके ब्राउज़र के आधार पर विफल या सफल हो सकता है।
Cross-Origin Resource Sharing
एक ही मूल नीति में ढील के लिए दूसरी तकनीक नाम पार ओरिजिन रिसोर्स शेयरिंग के तहत मानकीकृत किया जा रहा है। यह ड्राफ्ट मानक HTTP को एक नए मूल अनुरोध शीर्षलेख और एक नया Access-Control-Allow-Origin
प्रतिक्रिया शीर्षलेख के साथ बढ़ाता है। यह सर्वर को मूल रूप से उन सूचीओं को सूचीबद्ध करने के लिए हेडर का उपयोग करने की अनुमति देता है जो फ़ाइल का अनुरोध कर सकते हैं या वाइल्डकार्ड का उपयोग कर सकते हैं और किसी भी साइट द्वारा फ़ाइल से अनुरोध करने की अनुमति दे सकते हैं। फ़ायरफ़ॉक्स 3.5 और सफारी 4 जैसे ब्राउज़र इस नए शीर्षलेख का उपयोग XMLHttpRequest के साथ क्रॉस-मूल HTTP अनुरोधों को अनुमति देने के लिए करते हैं जो अन्यथा समान मूल नीति द्वारा प्रतिबंधित किए जाते हैं। [7]
Cross-document messaging
एक और नई तकनीक, पार दस्तावेज़ मैसेजिंग स्क्रिप्ट मूल की परवाह किए बिना एक और पृष्ठ पर एक स्क्रिप्ट के लिए शाब्दिक संदेशों पारित करने के लिए एक पृष्ठ से एक स्क्रिप्ट अनुमति देता है। विंडो ऑब्जेक्ट पर postMessage()
विधि को कॉल करना अतुल्यकालिक रूप से उस विंडो में "onmessage"
ईवेंट को सक्रिय करता है, जो किसी भी उपयोगकर्ता द्वारा परिभाषित ईवेंट हैंडलर को ट्रिगर करता है। एक पृष्ठ में एक स्क्रिप्ट अभी भी दूसरे पृष्ठ में विधियों या चरों तक सीधे नहीं पहुंच पाती है, लेकिन वे इस संदेश-पासिंग तकनीक के माध्यम से सुरक्षित रूप से संवाद कर सकते हैं।
JSONP
JSONP पेज जो किसी दूसरे डोमेन से एक JSON प्रतिक्रिया को लोड करता है करने के लिए एक <script>
तत्व जोड़कर एक अलग डोमेन से JSON डेटा प्राप्त करने के लिए एक पेज की अनुमति देता है।
फ़ंक्शन कॉल JSONP का "पी" है- शुद्ध JSON के आसपास "पैडिंग" या some "उपसर्ग" के अनुसार। सम्मेलन के अनुसार, ब्राउज़र कॉलबैक फ़ंक्शन का नाम नामित क्वेरी पैरामीटर मान के रूप में प्रदान करता है, आमतौर पर नाम जेएसएसपी या कॉलबैक नामित क्वेरी पैरामीटर फ़ील्ड नाम के रूप में, सर्वर के अनुरोध में, उदाहरण के लिए,
<script type="application/javascript"
src="http://server2.example.com/Users/1234?jsonp=parseResponse">
</script>
इस उदाहरण में, प्राप्त पेलोड होगा:
parseResponse({"Name": "Foo", "Id": 1234, "Rank": 7});
आप ऐसा नहीं कर सकते हैं कि अगर अन्य डोमेन के लिए फ्रेम अंक। –
लगता है कि iframe मूल पृष्ठ के समान डोमेन से नहीं है। आप तब सामग्री तक नहीं पहुंच सकते हैं। –
यदि आप किसी अन्य डोमेन पर हैं तो आप विकास के लिए फ़ायरबग सीडी कमांड का उपयोग कर सकते हैं: https://groups.google.com/forum/?fromgroups=#!topic/firebug/DvUvoLw-hOI (http://getfirebug.com/wiki/ index.php/Command_Line_API # cd.28window.29) – baptx