2016-07-28 22 views
-1

我有一個Python腳本作爲web api,許多域將調用它來獲取他們想要的數據。所以爲了使這個可行,我需要啓用CORS。我通讀了Flask文檔,但沒有找到指定多個域以允許它們使用CORS的方法。爲Flask-CORS指定域

這裏是代碼段,使CORS:

from flask_cors import cross_origin 

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

上述片段啓用CORS所有域。我想限制一些特定的域名列表。我只想知道如何指定這個列表。這裏是我想要做的事:

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

這就是您如何指定來源列表。你有什麼問題?請[edit]包含[mcve]。 – davidism

+1

你沒有寫出一個包含兩個項目的列表,你用一個逗號寫了一個項目。這只是一個錯字嗎? – davidism

回答

0

從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

所以,在這裏你需要給的stringlist。像:在這裏,你是在給一個字符串的所有域

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

通知。但是你需要提供一個列表。另請注意,您提供的完全合格域名(FQDN)根據RFC 6454W3C Recommendation

你也可以做這樣的事情:

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

這裏,我們允許我們的應用程序與/api開始的每一條路徑。根據您的要求,您可以在此處定義適當的路徑。在這裏,您還可以指定起源到要啓用CORS的域列表。

這裏是鏈接到我寫的代碼:https://github.com/Mozpacers/MozStar/

CORS沒有做什麼特別的事情;你只需要用一個特殊的頭部來回復請求,其中說Access-Control-Allow-Origin包含域請求來自。

對於飛行前的請求,你可以看到你可以自定義標題與瓶before_request和after_request裝飾回覆:https://github.com/CuriousLearner/TrackMyLinks/blob/master/src/server/views.py#L130

我希望這有助於!