UPDATE: Ich empfehle, keine Zeit in XDomainRequest investieren, weil es eine schrecklich schlechte Implementierung mit vielen Einschränkungen ist. Es funktioniert im Grunde nur für GET-Anfragen an Nicht-SSL-Server, also können Sie auch jsonp oder was auch immer verwenden.CORS mit jQuery und XDomainRequest in IE8/9
Ich benutze CORS, um eine Cross-Domain-API aufzurufen, jedoch gibt Internet Explorer Probleme. CORS sollte in IE8 und IE9 durch das XDomainRequest
Objekt möglich sein, aber ich kann nicht die Dinge zu arbeiten ..
JQuery refuses bietet native Unterstützung für XDomainRequest jedoch einig jQuery-Plugins wird vorgeschlagen, diese Unterstützung hinzuzufügen. Diese topic schlägt zwei solche Plugins vor: jQuery.XDomainRequest.js und xdr.js, von denen berichtet wurde, dass sie funktionieren. Afaik, sollten die Plugins das Verhalten von jQuery.ajax
automatisch überschreiben. Ich habe ein weiteres Plugin gefunden here.
habe ich eine kleine Demo-Seiten mit dem entsprechenden Plugins jQuery.XDomainRequest und xdr und jquery.ie.cors, die Ajax-Anfragen an einen CORS-fähigen Server auszuführen. Die Seiten funktionieren in Chrome und Firefox, aber IE8/9 wirft sofort einen Fehler mit der Berechtigung verweigert (noch bevor die Anfrage gemacht wurde). Diese MSDN post schlagen vor, einen weiteren Handler hinzuzufügen xhr.onprogress = function() {};
, aber ich habe es versucht und es funktioniert auch nicht.
Irgendwelche Hinweise, was ich falsch mache? Ich habe auch mit IE8 jetzt mit MS virtuellen Server getestet, aber es hat genau das gleiche Problem.
Bearbeiten: OK, so dass ich herausgefunden habe, dass ein Teil des Problems war, dass ich POST über HTTPS verwendete. Anscheinend XDomainRequest erlaubt CORS nicht über HTTPS. Ich kann zu HTTP wechseln, aber ich brauche wirklich POST.
Edit2: Siehe this issue on github für das Ende dieser Geschichte. Es stellt sich heraus, dass der xDomainRequest bei Verwendung von HTTP POST nur den Anfragetext (Argumente) als text/plain
codieren kann. Das macht es ziemlich wertlos, weil jeder application/x-www-form-urlencoded
oder multipart/form-data
verwendet.
Microsoft bietet kostenlose virtuelle Bilder mit IE8 verwenden können, wenn Sie also Bandbreite haben Sie in der Lage sein werden Hole es. (nur ein Tipp) –
Danke. Gleiches Problem in IE8. – Jeroen
Es gibt einen einfachen Hack/Trick, um jQuery CORS ajax in IE8 arbeiten zu lassen ... ich denke, Sie können es auf StackOverflow finden, indem Sie Antworten auf verwandte Fragen suchen. – c69