Zugriff verweigert mit $ http Anfrage in Angular und IE8

8

Ich versuche, meine eckige App dazu zu bringen, eine $ http.get-Anfrage zu machen. Funktioniert überall außer IE8. Ich benutze neueste Angular (1.0.6 denke ich). Die einzige Nachricht, die IE gibt, ist: TypeError:

Der Zugriff wurde verweigert.    undefined (im vorherigen eckigen war das)

Mein Host (nodejs) ist so eingestellt, dass er cors headers sendet:

%Vor%

Ich habe versucht, weitere Informationen über den Fehler mit Debug-Tools zu erhalten, aber:

Fiddler: zeigt nicht xmlhttprequests - scheint, dass Sie Ihre NET-App hacken können, um das zu beheben, aber nicht sicher, was ich mit meiner Webseite machen soll. DebugBar: zeigt diese Anfragen auch nicht an FirebugLite: 2 Versionen, die ich ausprobiert habe, sind kaputt - nur zufällige Fehler und laden nicht

Das Ändern der Hosts zum selben Ursprung löscht das Problem, also nehme ich an, dass es etwas versucht, aber man ist schwer zu debuggen.

Eckige Beiträge scheinen überholt zu sein und ich bin mir nicht sicher, was ich von hier aus machen soll.

    
cyberwombat 11.04.2013, 23:08
quelle

3 Antworten

7

Das hat nichts mit $ http zu tun. Mit $ http können Sie XHR (XDR) - oder JSONP-Anfragen erstellen. Es bietet keinen Mechanismus zur Umgehung der gleichen Ursprungsrichtlinie des Browsers.

  

Das Ändern der Hosts zum selben Ursprung löscht das Problem, also nehme ich an, dass es etwas versucht, aber man ist schwer zu debuggen.

Das ist der Schlüssel zu Ihrem Problem. IE8 unterstützt Cross-Origin-Resource-Sharing (CORS) nicht sehr gut. Um domänenübergreifend mit IE8 zu telefonieren, sollten Sie besser:

  1. Verwenden Sie Ihre Nodejs-App, um die Anfrage für Sie zu übernehmen, damit Sie dieselbe Domain verwenden können.
  2. Verwenden Sie JSONP in Ihrer $ http.get () -Anfrage

Es gibt eine Reihe von Fehlern, die mit CORS und IE8 verknüpft sind: hier beschrieben .

    
Alan 12.04.2013 00:08
quelle
3

Ich stieß auf dasselbe Problem, und obwohl es wahrscheinlich nicht ideal ist, besteht eine Lösung darin, die Sicherheitseinstellung "Zugriff auf domänenübergreifende Datenquellen" auf Aktivieren oder Eingabeaufforderung :

Ссылка

In meinem Fall stieß ich auf dasselbe Problem, als ich versuchte, Daten (über die Ressource $ angular) von meiner eigenen API zu holen, die auf einer anderen Domain gehostet wurde. In IE8 & amp; IE9 würden diese Anfragen mit dem oben beschriebenen Fehler fehlschlagen. Durch das Ändern der Sicherheitseinstellung im Internet Explorer, um domänenübergreifende Datenanforderungen zuzulassen, wurde dieses Problem behoben.

    
Sam Storie 02.06.2013 13:30
quelle
1

AngularJS unterstützt IE & lt; = 9 CORS nicht.

Bei Bedarf gibt es einen Link zur offiziellen AngualrJS-Website von github:

AngularJS Github offizielle Diskussion

    
Ant 02.12.2014 09:24
quelle