Sonntag, Juli 5, 2020

Zugriff Verweigert mit $http-Anfrage in Eckige und IE8

Ich bin versucht, meine Winkel-app zu tun, ein $http.get-Anforderung. Funktioniert überall, aber IE8. Ich bin mit neuesten Eckig (1.0.6 glaube ich). Die einzige Botschaft, die IE gibt ist:TypeError:

Zugriff verweigert.
nicht definiert ist (in den vorherigen Winkel dieses wurde )

Mein host (nodejs)gesendet (cors-Header:

res.header('Access-Control-Allow-Origin', '*'); //config.allowedDomains
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, X-Requested-By');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');

Habe ich versucht, um mehr info über den Fehler mit debug-tools aber:

Fiddler: nicht zeigen xmlhttprequests – scheint, können Sie hacken Ihre NETTO-app zu beheben, aber nicht wissen, was zu tun ist mit meiner web-Seite.
DebugBar: nicht zeigen diese Anfragen entweder
FirebugLite: 2 version, die ich habe versucht, gebrochen werden – nur zufällige Fehler und wird nicht geladen,

Ändern der hosts auf denselben Ursprung löscht die Ausgabe, so dass ich vermute, es ist etwas ausprobieren, aber Mann, es ist schwer zu Debuggen.

Eckige Beiträge auf dieser veraltet erscheinen und ich bin mir nicht sicher, was zu tun ist von hier.

  • Fiddler ‚ Total zeigt XHR für den IE. Wenn es nicht, das wäre eine GROßE Beaufsichtigung. stackoverflow.com/questions/7351238/…
  • Auch genau zu sein, IE8 und IE9 nicht haben, XHR, sondern XDomainRequest-oder XDR.
  • Nun habe ich gelesen, dass fiddler post und Einstellung prüfen und für das Leben von mir ich kann nicht sehen, jede dieser Anfragen. Andere Beiträge deuten auf einen proxy eingestellt sein fiddler, diese abholen. Und ich bin mir bewusst, IE8 XHR – XDomainRequest – ich kann einfach nicht scheinen zu finanzieren, die aktuelle Winkel-docs auf dieser. Einige ältere Beiträge anzuzeigen, gibt es keine Unterstützung für XDomainRequests aber nicht sicher, was Aktueller Stand ist – ich finde es schwer zu glauben, dass der IE8-funktioniert nicht mit Winkelgetriebe $http
  • es ist sehr gut möglich, dass mein setup ist, was macht Fiddler funktioniert nicht – vmware-client auf einem OSX Nodejs server. Dennoch das Hauptproblem ist einfach immer IE8 zu arbeiten
  • Das ist, wie mein system eingerichtet ist (zugegeben, ich nicht testen, IE8). Ich weiß, dass der $http-sollte funktionieren mit dem IE8, also es ist wahrscheinlich eine andere Frage.
  • Haben Sie withCredentials ? siehe Antwort zu stackoverflow.com/questions/15598917/…
  • nicht das Problem – ich glaube nicht, verwenden Auth – es versucht nur im Falle wenn

InformationsquelleAutor cyberwombat | 2013-04-11

3 Kommentare

  1. 7

    Dies hat nichts zu tun mit $http. $http können Sie machen XHR(XDR) oder JSONP-requests. Es nicht bieten einen Mechanismus zur Umgehung der Browser same-origin-policy.

    Ändern der hosts auf denselben Ursprung löscht die Ausgabe, so dass ich vermute, es ist etwas ausprobieren, aber Mann, es ist schwer zu Debuggen.

    Das ist der Schlüssel zu deinem problem. IE8 nicht unterstützt Cross-Origin-Resource-Sharing (CORS) sehr gut. Um cross-domain-Aufrufe mit IE8, Sie besser entweder:

    1. Verwenden Sie Ihre nodejs-app-proxy die Anfrage für Sie, so dass Sie die gleiche Domäne verwenden.
    2. Verwenden JSONP in $http.get () – Anforderung

    Gibt es eine Reihe Fallstricke im Zusammenhang mit CORS und IE8, die die hier aufgeführten.

    • Scheint, wie ich verwenden könnte, XDomainRequest – jemand machte eine Gabel eckig mit Unterstützung für diese, aber es ist inzwischen veraltet.
    • Ich würde empfehlen, gegen die Verwendung von XDomainRequest. Der Kantige Leute hatten einen guten Grund, warum Sie nicht Zusammenführen diese Funktion, ist es nicht eine große Lösung. Wenn möglich in deinem Fall würde ich nur proxy die Anfrage entweder mit nodejs oder durch hinzufügen von apache mit mod_proxy vor dem Knoten app.
    • OlliM hat Recht, XDR saugt. Standardmäßig, expressjs, den Formular-parser nicht Parsen von Daten, die gebucht wird, weil XDR unterstützt nur text/plain content-Typen. Keine custom-header-Unterstützung, kein preflight-Anfragen, etc.
    • Angular 1.2 nicht unterstützt IE<=9 CROS.
  2. 3

    Ich lief in das gleiche Problem, und während es ist wahrscheinlich nicht ideal, eine Lösung ist das ändern der IE – ‚Datenquellen über Domänengrenzen hinweg Zugreifen“ Sicherheit Einstellung Aktivieren oder Prompt:

    http://technet.microsoft.com/en-us/library/dd346862.aspx

    In meinem Fall war ich laufen in die gleiche Sache, wenn Sie versuchen zum abrufen von Daten (über Winkel ist $resource) aus meiner eigenen API zu Gast war, auf eine andere domain. In IE8 & IE9 diesen Anforderungen scheitern mit der Fehlermeldung, die Sie oben beschrieben haben. Ändern der Sicherheitseinstellungen im IE zu ermöglichen cross-domain-Daten-Anfragen gelöst, dass problem.

  3. 1

    AngularJS nicht unterstützt IE<=9 CORS.

    Als erforderlich, dort ist ein link zu github offiziellen AngualrJS website :

    AngularJS Github-offizielle Diskussion

    • Warum -1 bitte sagen?
    • Bitte geben Sie einen link auf die Unterstützung Ihrer Forderung. Dann werde ich mein entfernen -1
    • Getan. Danke für die Erklärung

Kostenlose Online-Tests