9

में क्रॉस साइट अनुरोधों के लिए एक्सेस कंट्रोल मैं कई डोमेन से एक एजेक्स कॉल करने का प्रयास कर रहा हूं जो अनुरोध को संभालेगा। फ़ायरफ़ॉक्स और क्रोम में क्रॉस डोमेन को सक्षम करने से निपटने के सर्वर पर शीर्ष लेख की स्थापना द्वारा आसान था:इंटरनेट एक्सप्लोरर

header("Access-Control-Allow-Origin: *"); 

लेकिन यह इंटरनेट एक्सप्लोरर में यह सक्षम करने में मदद नहीं करता। जब मैं कोशिश करता हूं:

httpreq.send(''); 

यह त्रुटि पहुंच से रोकता है।

यह इंटरनेट एक्सप्लोरर में कैसे सक्षम किया जा सकता है?

+0

आईई 10 काम ठीक है, आईई 8/9 सीमा के साथ। देखें http://caniuse.com/#search=cors – gavenkoa

+0

आईई 9 में सीओआरएस समर्थन की विशिष्ट सीमाएं क्या हैं? – Umopepisdn

उत्तर

5

मुझे विश्वास नहीं है कि आप सीधे इंटरनेट एक्सप्लोरर में ऐसा कर सकते हैं।

  • सर्वर आप नियंत्रित कि अजाक्स अनुरोध अग्रेषित कर सकते हैं करते हैं पर एक प्रॉक्सी अग्रेषण स्क्रिप्ट सेट करें: आप विकल्पों में से एक जोड़ी है। सुनिश्चित करें कि यह केवल उन उपयुक्त गंतव्यों के लिए आगे बढ़ता है जिनकी आपको आवश्यकता है ताकि आप किसी अज्ञात रिले में न आएं।

  • document.domain चाल का उपयोग करें। असल में आपको iframe एस का एक सेट बनाने की आवश्यकता है, प्रत्येक सर्वर के लिए आपको अजाक्स कॉल करने की आवश्यकता है। प्रत्येक iframe के भीतर document.domain प्रॉपर्टी को उस डोमेन से ठीक से मिलान करने के लिए सेट करें, जिसे आपको अजाक्स अनुरोध से भेजने की आवश्यकता है। आवश्यक डेटा को कैसे पॉप्युलेट करना है, document.domain सेट करने से पहले डीओएम मैनिपुलेशन का उपयोग करें। ध्यान दें कि इस चाल के लिए लक्ष्य सर्वर को मूल के उप-डोमेन में होना आवश्यक है। उदाहरण के साथ this article में अधिक।

+0

देर से प्रतिक्रिया के लिए खेद है। मैंने इसे सर्वर पर प्रॉक्सी स्क्रिप्ट के साथ किया है। –

1

इंटरनेट एक्सप्लोरर 8 के लिए, आप FF3 के लिए पसंद करते हैं, यानी "पहुंच-नियंत्रण-अनुमति दें-उत्पत्ति" शीर्ष लेख का उपयोग के साथ साथ XMLHttpRequest के बजाय XDomainRequest वस्तु का उपयोग करने की जरूरत है। सब कुछ IE8 के लिए यहाँ विस्तार से explaiend है: http://msdn.microsoft.com/en-us/library/dd573303%28VS.85%29.aspx

IE के पुराने जायके क्रॉस साइट अभिगम नियंत्रण है और न ही XDomainRequest वस्तुओं का समर्थन नहीं करते। http://softwareas.com/cross-domain-communication-with-iframes

0

बस, एरिक के जवाब में जोड़ने से IE के पुराने संस्करण, आप कर सकते हैं के लिए: लेकिन यह खत्म नहीं हुआ है, तो आप उदाहरण के लिए IFrame चाल, यानी एक अदृश्य IFrame है कि अपने कार्यों के रूप में यहाँ वर्णित कॉल बनाने का सहारा सकता है JQuery के 1.4.2 के $ .ajax विधि का उपयोग करें, जो डिफ़ॉल्ट रूप से क्रॉस-डोमेन अनुरोध की अनुमति देता है, या क्रॉस-डोमेन JSON के लिए, आप

jQuery.getJSON (स्ट्रिंग यूआरएल, मानचित्र डेटा, समारोह कॉलबैक) रिटर्न XMLHttpRequest

उपयोग कर सकते हैं

Jquery दस्तावेज़ों से एक अंश।

"jQuery अब जेएसओएनपी को मूल रूप से समर्थन देता है - यदि आप किसी दूरस्थ URL से JSON ($ .getJSON या $ .ajax के माध्यम से) लोड करने का प्रयास करते हैं तो सर्वर के लिए एक अतिरिक्त कॉलबैक प्रदान किया जाएगा।"

+0

स्पष्टीकरण के लिए, यह * केवल * jsonp अनुरोधों के लिए काम करता है। jQuery XDomainRequest के लिए समर्थन प्रदान नहीं करता है, और जिन कामकाजों को jQuery 1.5 या बाद की आवश्यकता होती है: http://bugs.jquery.com/ticket/8283 –

3

मैं IE8 और 9 बस jQuery $ .ajax के साथ काम (jQuery संस्करण 1.7.2) मिल गया के बाद से मैं पहली बार IE7 और ऊपर में CORS के लिए मेरे समाधान तैनात

jQuery.support.cors = true; 
jQuery(function() { 
$.ajax({ 
    crossDomain : true, 
    dataType: 'html', 
    //... 
    }); 
}); 
12

बहुत बदल गया है। सबसे पहले jQuery संपत्ति $ .support.cors डिफ़ॉल्ट रूप से सच है,।एनईटी फ्रेमवर्क 4.0 और इससे ऊपर के संस्करणों को 3.5.1 और उससे कम संस्करणों में लागू किए गए सीओआरएस का समर्थन नहीं करते हैं। एएसपी.NET 4.0 के साथ एक वेब सेवा लिखते समय मैंने Thinktecture.IdentityModel स्थापित किया था जो NuGet पैकेज के रूप में उपलब्ध है। फिर, Global.asax फ़ाइल के Application_Start विधि में, जोड़ें:

void Application_Start(object sender, EventArgs e) 
{ 
    Thinktecture.IdentityModel.Http.Cors.IIS.UrlBasedCorsConfiguration.Configuration 
     .ForResources("*") 
     .ForOrigins("http://localhost:80, http://mydomain") 
     .AllowAll() 
     .AllowMethods("GET", "POST"); 
} 

अब system.webServer भीतर httpProtocol तत्व जोड़:

:

<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    <add name="Access-Control-Allow-Headers" value="Content-Type, Accept, X-Requested-With, X-File-Name" /> 
    <add name="Access-Control-Allow-Methods" value="GET, POST" /> 
    </customHeaders> 
</httpProtocol> 

मेरे $ .ajax कॉल अब है

$.ajax({ 
    url: serviceUrl, 
    data: JSON.stringify(postData), 
    type: "POST", 
    cache: false, 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: onSuccess, 
    error: onError 
}); 
+0

जब यह प्रश्न पहली बार पोस्ट किया गया था IE 6 और 7 अभी भी बहुत आम थे, और वे बिल्कुल कोई सीओआरएस समर्थन नहीं है। मुझे विश्वास नहीं है कि '$ .support.cors' या तो लागू किया गया था। जानना अच्छा है चीजों में सुधार हुआ है! – Dan

+0

http://api.jquery.com/jQuery.support/ से ... ... यदि कोई ब्राउज़र XMLHttpRequest ऑब्जेक्ट बना सकता है और यदि XMLHttpRequest ऑब्जेक्ट के साथ प्रमाण-पत्र गुण है, तो cors सत्य के बराबर है। क्रॉस-डोमेन अनुरोधों को सक्षम करने के लिए ऐसे वातावरण जो अभी तक कॉर्स का समर्थन नहीं करते हैं लेकिन क्रॉस-डोमेन XHR अनुरोध (विंडोज गैजेट, आदि) को अनुमति देते हैं, $ .support.cors = true; ... "सेट करें। मैंने आईई 7, आईई 8, और आईई 9 में यह काम सत्यापित कर लिया है। –

+0

जीवन बचतकर्ता। इसे पोस्ट करने के लिए धन्यवाद। –

5

आप सक्षम कर सकता पहुँच डेटा स्रोत क्रॉस डोमेन कोशिश किया enter image description here

+1

यह स्थानीयहोस्ट पर वेबसाइट का परीक्षण करने के लिए उपयोगी था: 8080 –

+0

एक आकर्षण की तरह काम करें। स्थानीयहोस्ट +1 पर परीक्षण करने के लिए वास्तव में उपयोगी है – CocoHot