AngularJS entdeckt nicht Access-Control-Allow-Origin-Header?
Ich bin mit einem Winkel-app auf einem lokalen virtualhost (http://foo.app:8000). Es ist eine Anfrage an einen anderen lokalen Host (http://bar.app:8000) mit $http.post
.
$http.post('http://bar.app:8000/mobile/reply', reply, {withCredentials: true});
In den Netzwerk-tab von Chrome Developer Tools, die ich natürlich sehen die OPTIONS-Anfrage, und die Antwort enthält die header:
Access-Control-Allow-Origin: http://foo.app:8000
Jedoch, die die POST-Anforderung wird abgebrochen mit der folgenden Fehlermeldung:
Kein 'Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource. Herkunft 'http://foo.app:8000' ist daher nicht der Zugriff erlaubt.
Hat jemand Erfahrung? Die Access-Control-Allow-Origin
header ist sehr klar enthalten in der Antwort des OPTIONS-Anfrage, also ich kann nicht für das Leben von mir herauszufinden, warum die POST handelt, der header fehlte.
Access-Control-Allow-Credentials
auch true
.
InformationsquelleAutor der Frage TaylorOtwell | 2014-01-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es ein bug in chrome für lokale dev. Versuchen Sie andere browser. Dann werde es funktionieren.
InformationsquelleAutor der Antwort user1469734
Gibt es einen workaround für diejenigen, die Chrome verwenden. Diese Erweiterung können Sie Anfragen, Website mit AJAX aus einer beliebigen Quelle, da es fügt
'Access-Control-Allow-Origin: *'
- header der Antwort.Als alternative, können Sie dieses argument, um Ihre Chrome-launcher:
--disable-web-security
. Beachten Sie, dass ich nur für Entwicklungszwecke gedacht, nicht für normale "web-surfen". Für Referenz sehen Ausführung Chrom mit Fahnen.Als ein letzter Hinweis, durch die Installation der extension erwähnt auf dem ersten Absatz, können Sie ganz einfach zu aktivieren/deaktivieren CORS.
InformationsquelleAutor der Antwort Rui Afonso Pereira
War ich das senden von Anfragen von angularjs mit $http-service zu Flasche läuft auf
http://localhost:8090/
und ich hatte zu gelten CORS sonst bekam ich Anfrage Fehler wie "Keine" Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource"InformationsquelleAutor der Antwort Gabriel
Habe ich das exakt gleiche Problem. Für mich, die OPTIONS-Anforderung würde durch zu gehen, aber die POST-Anforderung würde sagen, "abgebrochen." Dies führte mich zu glauben, dass der browser war nie was die POST-Anforderung an alle. Chrome sagte etwas wie "Vorsicht provisorischen Header angezeigt werden" im request-Header, aber keine Antwort-Header gezeigt wurden. Am Ende drehte ich mich um debugging in Firefox, die mich führte, um herauszufinden, mein server reagiert mit einer Fehlermeldung und keine CORS-Header vorhanden waren auf die Antwort. Chrome war eigentlich das empfangen der Antwort, aber nicht so die Reaktion gezeigt werden, die in der Netzwerk-Ansicht.
InformationsquelleAutor der Antwort brain_bacon
CROS der behoben werden muss von der server-Seite.
Filter erstellen, die wie pro Anforderung auf Zugriff zulassen, und fügen Sie Filter in web.xml
Beispiel mit spring:
Filterklasse:
Web.xml:
InformationsquelleAutor der Antwort nkharche
Ich lief in dieses problem heute. Es stellte sich heraus, dass ein Fehler auf dem server (null pointer exception) verursacht einen Fehler bei der Erstellung einer Antwort, doch ist es immer noch erzeugt einen HTTP-status-code 200. Da der Statuscode 200, Chrom erwartet Sie eine gültige Antwort. Die erste Sache, die Chrome gemacht hat, war der Blick für die "Access-Control-Allow-Origin' - header, die es nicht zu finden. Chrome dann storniert den Antrag und die Winkel gab mir eine Fehlermeldung. Der Fehler bei der Verarbeitung der POST-Anforderung ist der Grund, warum die OPTIONEN gelingen würde, aber der POST würde scheitern.
Kurz gesagt, wenn Sie diese Fehlermeldung sehen, kann es sein, dass dein server nicht wieder alle Header auf alle in Reaktion auf die POST-Anfrage.
InformationsquelleAutor der Antwort David Hansen
Es kann auch passieren, wenn deine Parameter sind falsch in der Anfrage. In meinem Fall arbeitete ich mit einer API, die mir die Nachricht geschickt hat
"Nein" Access-Control-Allow-Origin' - header vorhanden ist, auf die angeforderte Ressource. Herkunft 'null' ist daher nicht der Zugriff erlaubt. Die Antwort hatte Sie den HTTP-status-code 401."
wenn ich senden falsche Benutzername oder das Passwort mit der POST-Anforderung zur Anmeldung.
InformationsquelleAutor der Antwort tacticurv
InformationsquelleAutor der Antwort Indranil Acharya