2016-07-28 10 views
-1

Ich habe ein Python-Skript, das als Web-API dient, und viele Domänen nennen dies, um die gewünschten Daten zu erhalten. Um dies durchführbar zu machen, muss ich CORS aktivieren. Ich habe die Flask-Dokumentation durchgelesen, aber keine Möglichkeit gefunden, mehrere Domains anzugeben, um CORS für sie zuzulassen.Angeben von Domänen für Flask-CORS

Hier ist Code-Schnipsel, die CORS ermöglicht:

from flask_cors import cross_origin 

@app.route("/") 
@cross_origin() 

Die obige Snippet ermöglicht CORS für alle Domänen. Ich möchte dies auf eine bestimmte Liste von Domains beschränken. Alles was ich wissen möchte, wie ich diese Liste angeben kann. Hier ist, was ich versuche zu tun:

@cross_origin(["www.domain1.com, www.domain2.com"]) 
+0

So geben Sie die Liste der Ursprünge an. Welches Problem hast du? Bitte [bearbeiten], um ein [mcve] einzuschließen. – davidism

+1

Sie haben keine Liste mit zwei Elementen geschrieben, Sie haben ein Element mit einem Komma darin geschrieben. Ist das nur ein Tippfehler? – davidism

Antwort

0

Aus der Dokumentation von CORS: http://flask-cors.corydolphin.com/en/latest/api.html?highlight=origin#flask_cors.cross_origin

flask_cors.cross_origin(*args, **kwargs) The origin, or list of origins to allow requests from. The origin(s) may be regular expressions, case-sensitive strings, or else an asterisk

So, hier müssen Sie list von string geben. Wie:

cross_origin(["http://www.domain1.com", "http://www.domain2.com"])

Hinweis hier, dass Sie alle Domain in einer einzigen Zeichenfolge wurden zu geben. Aber Sie mussten eine Liste bereitstellen. Beachten Sie auch, dass Sie den vollständig qualifizierten Domänennamen (FQDN) gemäß RFC 6454 und W3C Recommendation angeben.

Sie können auch etwas tun:

cors = CORS(app, resources={r"/api/*": {"origins": "*"}})

Hier sind wir jeden Weg in unserer App ermöglicht, die mit /api beginnt. Abhängig von Ihrer Anforderung können Sie hier einen geeigneten Pfad definieren. Hier können Sie auch Ursprünge für eine Liste von Domänen angeben, für die Sie CORS aktivieren möchten. Hier

ist der Link zu dem Code, den ich geschrieben habe: https://github.com/Mozpacers/MozStar/

CORS nichts tut Besonderes; Sie müssen nur auf die Anfrage mit einem speziellen Header antworten, der besagt, dass Access-Control-Allow-Origin die Domain-Anfrage enthält.

Für Anfragen vor dem Flug, können Sie sehen, wie Sie mit benutzerdefinierten Header mit Flask before_request und after_request Dekorateure antworten können: https://github.com/CuriousLearner/TrackMyLinks/blob/master/src/server/views.py#L130

Ich hoffe, das hilft!