Auf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden. Herkunft ‘…’ wird daher kein Zugriff gewährt
Lesezeit: 6 Minuten
Th3lmuu90
Ich verwende .htaccess, um URLs umzuschreiben, und ich habe HTML-Basis-Tags verwendet, damit es funktioniert.
Wenn ich jetzt versuche, eine Ajax-Anfrage zu stellen, erhalte ich die folgende Fehlermeldung:
XMLHttpRequest kann nicht geladen werden http://www.example.com/login.php. Auf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden. Herkunft ‘http://example.com‘ wird daher kein Zugriff gewährt.
Egal… es funktioniert jetzt, ich weiß nicht einmal, was der Fehler war :S
– Th3lmuu90
6. Dezember 13 um 21:20 Uhr
Obwohl subtil, http://wordicious.com ist ein andere Domäne als http://www.wordicious.com/, also der Fehler. Übrigens, wenn es jetzt funktioniert und von selbst zurückgekommen ist, sollten Sie die Frage wahrscheinlich löschen.
– acdcjunior
6. Dezember 13 um 21:33 Uhr
@acdcjunior Das scheint der Fehler zu sein, was eine scharfsinnige Beobachtung Ihrerseits ist. Wenn Sie das als Antwort posten, würde ich es positiv bewerten.
– Waleed Khan
6. Dezember 13 um 21:55 Uhr
Gut, dass die Frage nicht gelöscht wurde, sonst hätte ich sie heute nicht gesehen!
– Eiswasser
18. Mai 15 um 7:54 Uhr
Benutzen addHeader Anstatt zu verwenden setHeader Methode,
es zeigt addheader nicht definiert an. Kannst du es bitte erklären?
– Vaisakh-PC
21. Oktober 14 um 7:42 Uhr
Wo setze ich diese Zeilen ein?
– Dave Walley
24. November 14 um 16:52 Uhr
Wo soll das hinzugefügt werden?
– Alex
29. Dezember 2014 um 12:11 Uhr
Dieser Blogpost spricht über Node.js und Express. Nicht clientseitiges Javascript. kann jemand bestätigen, ob das funktioniert?
– Sam Eaton
20. April 15 um 23:01 Uhr
Ich glaube nicht, dass diese Konfiguration nur auf der Clientseite durchgeführt werden kann. Wo sie abgelegt werden soll, wäre sie im serverseitigen Code (vermutlich beim Erstellen einer Antwort auf eine Anfrage).
– Chirag Ravindra
16. September 15 um 11:35 Uhr
acdcjunior
Warum wird der Fehler ausgelöst:
Der JavaScript-Code wird durch die begrenzt Same-Origin-Policywas bedeutet, von einer Seite bei www.example.comkönnen Sie nur (AJAX-)Anfragen an Dienste stellen, die sich unter befinden exakt dieselbe Domäne, in diesem Fall genau www.example.com (nichtexample.com – ohne das www – oder whatever.example.com).
In Ihrem Fall versucht Ihr Ajax-Code, einen Dienst in zu erreichen http://wordicious.com von einer Seite befindet sich unter http://www.wordicious.com.
Obwohl sie sich sehr ähnlich sind, sind sie es nicht dieselbe Domäne. Und wenn sie sich nicht in derselben Domäne befinden, ist die Anfrage nur erfolgreich, wenn die Antwort des Ziels eine enthält Access-Control-Allow-Origin Kopfzeile darin.
Als Ihre Seite/Dienst unter http://wordicious.com nie konfiguriert wurde, um einen solchen Header anzuzeigen, wird diese Fehlermeldung angezeigt.
Lösung:
Wie gesagt, die Ursprungs- (wo sich die Seite mit JavaScript befindet) und die Zieldomäne (wo das JavaScript zu erreichen versucht) müssen die Domains sein genau gleich.
Ihr Fall scheint ein Tippfehler zu sein. Sieht aus wie http://wordicious.com und http://www.wordicious.com sind tatsächlich der gleiche Server/die gleiche Domäne. Um das Problem zu beheben, geben Sie das Ziel und den Ursprung gleichermaßen ein: machen Sie Ajax-Code-Anfrageseiten/Dienste zu http://www.wordicious.com nicht http://wordicious.com. (Vielleicht platzieren Sie die Ziel-URL relativ, wie z '/login.php'ohne die Domäne).
Ganz allgemein:
Wenn das Problem kein Tippfehler ist, wie es bei dieser Frage der Fall zu sein scheint, wäre die Lösung zu Ergänzen Sie die Access-Control-Allow-Origin zur Zieldomäne. Das Hinzufügen hängt natürlich von dem Server/der Sprache hinter dieser Adresse ab. Manchmal reicht eine Konfigurationsvariable im Tool aus. In anderen Fällen müssen Sie die Header selbst durch Code hinzufügen.
Naga
Für .NET-Server kann dies in web.config wie unten gezeigt konfiguriert werden
@SyedAliTaqi Die Frage ist PHP, deshalb wird die Antwort unterschätzt. aber bei mir hat es auch funktioniert 🙂
– Ahmad Th
10. September 17 um 16:05 Uhr
Nizar B.
Wenn Sie diese Fehlermeldung vom Browser erhalten:
Auf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden. Origin ‘…’ ist daher nicht zugriffsberechtigt
Wenn Sie versuchen, eine Ajax-POST/GET-Anforderung an einen Remote-Server zu senden, der sich Ihrer Kontrolle entzieht, vergessen Sie bitte diese einfache Lösung:
Was Sie wirklich tun müssen, insbesondere wenn Sie nur JavaScript für die Ajax-Anfrage verwenden, ist ein interner Proxy, der Ihre Anfrage entgegennimmt und an den Remote-Server weiterleitet.
Führen Sie zuerst in Ihrem JavaScript einen Ajax-Aufruf an Ihren eigenen Server durch, etwa so:
Erstellen Sie dann eine einfache PHP-Datei namens proxy.php, um Ihre POST-Daten zu verpacken und sie als Parameter an den Remote-URL-Server anzuhängen. Ich gebe Ihnen ein Beispiel dafür, wie ich dieses Problem mit der Expedia-Hotelsuch-API umgehe:
Sie müssen die Header-Schlüssel / -Werte in die Antwort der Optionsmethode einfügen. zum Beispiel, wenn Sie Ressourcen bei haben http://mydomain.com/myresource
dann schreiben Sie in Ihren Servercode
Aber das ist keine gute Lösung, wenn es um die Sicherheit geht
.
8207700cookie-checkAuf der angeforderten Ressource ist kein Header „Access-Control-Allow-Origin“ vorhanden. Herkunft ‘…’ wird daher kein Zugriff gewährtyes
Egal… es funktioniert jetzt, ich weiß nicht einmal, was der Fehler war :S
– Th3lmuu90
6. Dezember 13 um 21:20 Uhr
Obwohl subtil,
http://wordicious.com
ist ein andere Domäne alshttp://www.wordicious.com/
, also der Fehler. Übrigens, wenn es jetzt funktioniert und von selbst zurückgekommen ist, sollten Sie die Frage wahrscheinlich löschen.– acdcjunior
6. Dezember 13 um 21:33 Uhr
@acdcjunior Das scheint der Fehler zu sein, was eine scharfsinnige Beobachtung Ihrerseits ist. Wenn Sie das als Antwort posten, würde ich es positiv bewerten.
– Waleed Khan
6. Dezember 13 um 21:55 Uhr
Gut, dass die Frage nicht gelöscht wurde, sonst hätte ich sie heute nicht gesehen!
– Eiswasser
18. Mai 15 um 7:54 Uhr