2016-04-29 2 views
3

Ich entwickle eine App mit einer API in Eve und AngularJS. Um das CORS-Problem zu vermeiden, habe ich einen einfachen NodeJS-Server für meine statischen Dateien eingerichtet. Aber auch nachdem ich alle Domains auf meiner Python-Eve-API durch Schreiben 'X_DOMAINS': '*' (ich testete mit Curl und es funktionierte) habe ich Probleme in meinem Browser, wenn ich die API mit $http aufrufen möchte.Probleme mit CORS mit Eve und AngularJS

Dies ist der Fehler, den ich in Chrom erhalten:

XMLHttpRequest cannot load http://localhost:5000/regions. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 

Ich schrieb sogar in meinem Knoten app, obwohl ich es nutzlos wäre dachte:

app.all('/*', function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type"); 
    res.header("Access-Control-Allow-Methods", "GET, POST","PUT"); 
    next(); 
}); 

Nichts gearbeitet hat bisher Danke schonmal für die Hilfe!

Antwort

0

Fügen Sie diese in Ihrer Antwort-Header:

res.header("Access-Control-Allow-Origin", "http://localhost:8080"); 

Entfernen Sie die folgenden Schritte aus:

http://localhost:8080 

Oder, was Sie können, ist versuchen, die Anfrage Ursprung zu erhalten und es auf die Antwort hinzufügen. So etwas wie das:

In einigen Fällen könnte es funktionieren, besonders wenn es ein GET-Aufruf ist. Aber wenn es ein POST ist, werden einige Browser es blockieren.

Eine weitere Option ist das Deaktivieren der Websicherheit in Ihrem Browser (obwohl dies nicht die beste Lösung ist). Sie können dafür here lesen.

Auch gehen Sie durch die Beiträge here, so dass Sie eine bessere Vorstellung von dem Problem haben können.

0

Im folgenden Befehl: res.header ("Zugriffskontrolle-Erlauben-Header", "X-Requested-With, Content-Type");

Sie setzen zulässige Header, vielleicht haben Sie andere Header z. "Authorization", in diesem Fall müssen Sie diese Header zu oben genannten Befehl

3

Ran in einige ähnliche Probleme mit Javascript. Ich könnte es am Vorabend mit ein paar Optimierungen am Laufen bekommen, aber am Ende war es nicht genug. Die BadRequest-Antworten werden von der flask-Engine gesendet, nicht von eve, wodurch JavaScript-Versuche zur Fehlerbehandlung deaktiviert werden. Es scheint, gibt es eine schöne Flasche Erweiterung CORS, dass es gut abdeckt:

from flask.ext.cors import CORS 
.... 
CORS(app) 

Das war alles, was ich am Ende benötigt.