jQuery के अजाक्स नोट्स
- ब्राउज़र सुरक्षा प्रतिबंधों के कारण, अधिकांश अजाक्स अनुरोध एक ही मूल नीति के अधीन हैं ; अनुरोध किसी भिन्न डोमेन, उपडोमेन, पोर्ट या प्रोटोकॉल से डेटा को सफलतापूर्वक पुनर्प्राप्त नहीं कर सकता है।
- स्क्रिप्ट और JSONP अनुरोध समान मूल नीति प्रतिबंधों के अधीन नहीं हैं।
क्रॉस-डोमेन बाधा को दूर करने के कुछ तरीके हैं :
कुछ प्लगइन्स हैं जो क्रॉस-डोमेन अनुरोधों की सहायता करते हैं:
सचेत!
इस समस्या को दूर करने का सबसे अच्छा तरीका, बैक-एंड में अपना खुद का प्रॉक्सी बनाना है, ताकि आपका प्रॉक्सी अन्य डोमेन में सेवाओं को इंगित करे, क्योंकि बैक-एंड में समान मूल पॉलिसी प्रतिबंध मौजूद नहीं है । लेकिन अगर आप बैक-एंड में ऐसा नहीं कर सकते, तो निम्नलिखित युक्तियों पर ध्यान दें।
चेतावनी!
तृतीय-पक्ष प्रॉक्सी का उपयोग करना सुरक्षित अभ्यास नहीं है, क्योंकि वे आपके डेटा का ट्रैक रख सकते हैं, इसलिए इसका उपयोग सार्वजनिक जानकारी के साथ किया जा सकता है, लेकिन निजी डेटा के साथ कभी नहीं ।
कोड उदाहरण नीचे उपयोग दिखाया jQuery.get () और jQuery.getJSON () , दोनों की आशुलिपि तरीके हैं jQuery.ajax ()
कहीं भी
कोर कहीं भी एक नोड है। प्रॉक्सी जो अनुमानित अनुरोध के लिए कॉर्स हेडर जोड़ता है।
एपीआई का उपयोग करने के लिए, बस यूआरएल यूआरएल के साथ यूआरएल को उपसर्ग करें। ( Https का समर्थन करता है : github भंडार देखें )
यदि आप आवश्यक होने पर स्वचालित रूप से क्रॉस-डोमेन अनुरोध सक्षम करना चाहते हैं, तो निम्नलिखित स्निपेट का उपयोग करें:
$.ajaxPrefilter( function (options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
//options.url = "http://cors.corsproxy.io/url=" + options.url;
}
});
$.get(
'http://en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
जो कुछ भी मूल
जो भी ओरिजिनल एक क्रॉस डोमेन जोंसप एक्सेस है। यह anyorigin.com के लिए एक खुला स्रोत विकल्प है ।
Google.com से डेटा प्राप्त करने के लिए , आप इस स्निपेट का उपयोग कर सकते हैं:
// It is good specify the charset you expect.
// You can use the charset you want instead of utf-8.
// See details for scriptCharset and contentType options:
// http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
$.ajaxSetup({
scriptCharset: "utf-8", //or "ISO-8859-1"
contentType: "application/json; charset=utf-8"
});
$.getJSON('http://whateverorigin.org/get?url=' +
encodeURIComponent('http://google.com') + '&callback=?',
function (data) {
console.log("> ", data);
//If the expected response is text/plain
$("#viewer").html(data.contents);
//If the expected response is JSON
//var response = $.parseJSON(data.contents);
});
कोरस प्रॉक्सी
कॉर्स प्रॉक्सी किसी भी वेबसाइट के लिए कॉर्स अनुरोध को सक्षम करने के लिए एक सरल नोड.जेएस प्रॉक्सी है। यह आपकी साइट पर जावास्क्रिप्ट कोड को अन्य डोमेन पर संसाधनों तक पहुंचने के लिए अनुमति देता है जो समान-मूल नीति के कारण सामान्य रूप से अवरुद्ध हो जाएंगे।
यह कैसे काम करता है? CORS प्रॉक्सी क्रॉस-ऑरिजनल रिसोर्स शेयरिंग का लाभ उठाता है, जो कि HTML 5. के साथ जोड़ा गया एक फीचर है। सर्वर यह निर्दिष्ट कर सकते हैं कि वे चाहते हैं कि ब्राउज़र अन्य वेबसाइटों को उन संसाधनों का अनुरोध करने की अनुमति दें जिनकी वे मेजबानी करते हैं। कॉर्स प्रॉक्सी बस एक HTTP प्रॉक्सी है, जो "किसी को भी यह अनुरोध कर सकता है" कहकर प्रतिक्रियाओं में एक हेडर जोड़ता है।
यह लक्ष्य प्राप्त करने का एक और तरीका है ( www.corsproxy.com देखें )। आपको बस इतना करना है : http: // और www। URL को सम्मिलित किया जा रहा है, और URL को प्रीपेंड करेंwww.corsproxy.com/
$.get(
'http://www.corsproxy.com/' +
'en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
CORS प्रॉक्सी ब्राउज़र
हाल ही में मैंने यह पाया, इसमें विभिन्न सुरक्षा उन्मुख क्रॉस ओरिजिनल रिमोट शेयरिंग उपयोगिताओं शामिल हैं। लेकिन यह बैकएंड के रूप में फ्लैश के साथ एक ब्लैक-बॉक्स है।
आप इसे यहां क्रिया में देख सकते हैं: CORS प्रॉक्सी ब्राउज़र
GitHub पर स्रोत कोड प्राप्त करें: koto / cors-प्रॉक्सी ब्राउज़र