Access control for cross-site requests in Internet Explorer
Ich versuche, ein AJAX-Aufruf von mehreren domains auf eine einzige, die wird die Anfrage verarbeiten soll. Ermöglicht Cross-domain in Firefox und Chrome war einfach durch setzen der header in der Handhabung-server:
header("Access-Control-Allow-Origin: *");
Aber dieses hilft nicht, aktivieren Sie es in Internet Explorer. Wenn ich versuche:
httpreq.send('');
Stoppt es mit Fehler Zugriff verweigert.
Wie kann man das in Internet Explorer aktiviert?
IE 10 funktioniert, IE8/9 mit Einschränkung. Siehe caniuse.com/#search=cors
Was sind die spezifischen Einschränkungen von CORS-support-in IE9?
Was sind die spezifischen Einschränkungen von CORS-support-in IE9?
InformationsquelleAutor Aleksandar Janković | 2010-01-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass Sie tun können, direkt im Internet Explorer. Sie haben ein paar Optionen:
Einrichten eines proxy-Weiterleitung-Skript auf dem server, die Sie tun, control, vorne die Ajax-Anfragen. Stellen Sie sicher, dass es nur vorne, um die entsprechenden Ziele, die Sie benötigen, so dass Sie nicht bekommen, sich in ein anonymes relay.
Verwenden Sie die
document.domain
trick. Im Grunde müssen Sie erstellen eine Reihe voniframe
s, eine für jeden server, den Sie benötigen, um Ajax-Aufrufe zu. Innerhalb der einzelneniframe
legen Sie diedocument.domain
Eigenschaft, genau die domain, die Sie benötigen, um senden der Ajax-Anfragen zu. Wie füllen Sie die erforderlichen Daten ein, verwenden Sie DOM-manipulation vor der Einstellungdocument.domain
. Beachten Sie, dass dieser trick erfordert die Ziel-Server werden in sub-Domänen des Originals. Mehr in dieser Artikel, mit Beispielen.InformationsquelleAutor Dan
Viel geändert hat, seit ich das erste gepostet meine Lösung für CORS in IE7 und höher. Zunächst wird mit der jQuery-Eigenschaft $.Unterstützung.cors ist true standardmäßig .NET frameworks 4.0 und höher nicht mehr unterstützt CORS, wie umgesetzt in den Versionen 3.5.1 und niedriger. Beim schreiben eines web-service mit ASP.NET 4.0 musste ich installieren Thinktecture.IdentityModel, die verfügbar ist als NuGet-Paket. Dann, in der Application_Start-Methode der Global.asax-Datei hinzufügen:
Fügen Sie nun die httpProtocol element im system.webServer:
Meine $.ajax-Aufruf jetzt:
$.support.cors
hatte, wurde dann umgesetzt. Gut zu wissen, Dinge haben sich verbessert!aus api.jquery.com/jQuery.support "...cors ist gleich true, wenn ein browser das erstellen eines XMLHttpRequest-Objekt und wenn das XMLHttpRequest-Objekt hat eine withCredentials Eigenschaft. Zum aktivieren der cross-domain-requests in Umgebungen, die keine Unterstützung für cors noch erlauben jedoch domänenübergreifende XHR-Anforderungen (windows-gadget, etc), set $.Unterstützung.cors = true;...". Ich habe überprüft dies funktioniert im IE7, IE8 und IE9.
life saver. Vielen Dank für dieses posting.
Das ist großartig, aber funktioniert nicht in IE8. Dieser hier github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest ist sehr hilfreich und es funktioniert in allen Browsern einschließlich IE8 ( noch nicht getestet im IE 7 ) Credits an @gbakernet
Danke für die Antwort, Srikanth. Diese Lösung hat funktioniert im IE8 für unsere Nutzer. Es können auch andere Variablen, die Auswirkungen auf Ihre Umsetzung. Viel hat sich geändert, seit diese Lösung gepostet wurde. $.Unterstützung.cors ist true standardmäßig in allen späteren Versionen von jQuery, und dieser Ansatz funktioniert nicht mehr .Net framework 4 und höher. Sie müssen nun eine Bibliothek wie die Thinktecture.IdentityModel.dll für CORS Arbeit mit ein .Net-service. CORS aktiviert werden müssen, in der Globalen.asax Methode Application_Start
InformationsquelleAutor John Bonfardeci
Haben Sie versucht, die Aktivierung Access-Daten-Source-Cross-Domains
Arbeiten wie ein Charme. Wirklich hilfreich zum testen auf localhost +1
InformationsquelleAutor vanduc1102
Ich habe IE8 und 9 arbeiten mit nur jQuery $.ajax (jQuery-version 1.7.2)
InformationsquelleAutor pellucid
Für Internet Explorer 8, die Sie benötigen, zu tun, wie für FF3, ie verwenden Sie die "Access-Control-Allow-Origin" - header plus XDomainRequest-Objekt statt XMLHttpRequest.
Alles ist explaiend im detail hier für den IE8:
http://msdn.microsoft.com/en-us/library/dd573303%28VS.85%29.aspx
Älteren Aromen von IE nicht unterstützt Cross-Site Access Control noch XDomainRequest-Objekte.
Aber es ist nicht vorbei, Sie könnte Rückgriff auf die IFrame-trick zum Beispiel, ie Erstellung eines unsichtbaren IFrame, fordert Ihren Funktionen als hier beschrieben:
http://softwareas.com/cross-domain-communication-with-iframes
InformationsquelleAutor Eric
Nur das hinzufügen, um die Eric ' s Antwort , für die Ältere version des IE , die Sie verwenden können, Jquery 1.4.2 $.ajax-Methode, die standardmäßig ermöglicht die cross-domain-requests, oder für cross-domain JSON , die Sie verwenden können,
jQuery.getJSON( String url, Map data, callback-Funktion ) gibt XMLHttpRequest
Einen Auszug aus der Jquery docs.
"jQuery unterstützt nun JSONP nativ - wenn Sie versuchen zu laden, JSON (via $.getJSON oder $.ajax) von einer remote-URL dann eine extra callback für den server zu interpretieren."
InformationsquelleAutor Furqan Hameedi