में document.domain का उपयोग कर समान मूल नीति वर्कअराउंड मैं जावास्क्रिप्ट में समान मूल नीति समस्याओं में चल रहा हूं। मैंने document.domain
वैरिएबल का उपयोग करके इसके लिए एक समाधान के बारे में पढ़ा है, लेकिन मुझे काम करने के लिए कामकाज नहीं मिल रहा है। कामकाज यह है कि आप document.domain
को 'example.com'
पर सेट करने में सक्षम होना चाहिए ताकि यदि आप foo.example.com
से कोड चलाते हैं तो यह bar.example.com
से XHR के माध्यम से डेटा लोड कर सकता है। वैकल्पिक हल परजावास्क्रिप्ट
विवरण यहां हैं:
https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript
मेरे उदाहरण कोड - जो वांछित परिणाम का उत्पादन नहीं करता - http://foo.example.com/
की तरह किसी URL से चलाया जाता है:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<script>
document.domain = 'example.com';
window.onload = function() {
var req = new XMLHttpRequest();
var url = 'http://bar.example.com/';
req.open('GET', url, true);
req.onreadystatechange = function (aEvt) {
if (req.readyState == 4) {
var elem = document.getElementById('result');
if (req.status == 200) {
var data = req.responseText;
} else {
var data = "Error loading page: " + req.status;
}
elem.innerHTML = data;
}
};
req.send(null);
};
</script>
Result:<hr>
<div id="result"></div>
</body>
</html>
इस कोड से आउटपुट:
Result: Error loading page: 0
यदि मैं url
से 'http://foo.example.com/'
बदलता हूं, तो सब ठीक से काम करता है। क्या मेरे उदाहरण कोड में कोई बग है?
मैं प्रॉक्सी का उपयोग नहीं करना चाहता क्योंकि वे धीमे, कम कुशल हैं, और हमारे वेब सर्वर पर यातायात में वृद्धि करेंगे। यह वास्तव में अच्छा होगा अगर यह कामकाज वास्तव में काम करता है। क्या यह कामकाज "आकाश में पाई" है?
धन्यवाद j0rd4n, यह वास्तव में गैर-प्रॉक्सी समाधान का प्रकार है जिसे मैं ढूंढ रहा था, भले ही मैं दस्तावेज़.डोमेन के साथ गलत पेड़ को भड़क रहा था। मुझे जेएसओएनपी को कॉल करने वाली योजना पर थोड़ी अधिक जानकारी मिली और कैसे jQuery में यह कार्यक्षमता भी बनाई गई है, जो मेरे प्रश्न के दायरे से बाहर है, लेकिन दिलचस्प है: http://www.ibm.com/developerworks/library/wa-aj-jsonp1/ – Rubix
मैंने जिस प्रक्रिया का उल्लेख किया है वह JSONP का उपयोग करता है लेकिन यह मैन्युअल रूप से करता है। jquery JSONP के "प्राप्तकर्ता" को जावास्क्रिप्ट डॉम में संभाल लेगा, लेकिन आपको अभी भी एक सेवा प्रदान करनी होगी जो JSONP टेक्स्ट लौटाए। दिन के अंत में, आपके सर्वर पेज को स्वरूपित JSONP वापस करना होगा। आपकी जावास्क्रिप्ट (चाहे यह jquery, ext-js, आदि हो) को स्क्रिप्ट टैग के अंदर स्क्रिप्ट चलाने के लिए कॉल करना होगा। –