我有一个用作 web api 的 Python 脚本,许多域会调用它来获取他们想要的数据。所以为了使这个可行,我需要启用 CORS。我通读了 Flask 文档,但没有找到指定多个域以允许它们使用 CORS 的方法。
这是启用 CORS 的代码片段:
from flask_cors import cross_origin
@app.route("/")
@cross_origin()
Run Code Online (Sandbox Code Playgroud)
上面的代码片段为所有域启用了 CORS。我想将其限制为某些特定的域列表。我只想知道如何指定此列表。这是我想要做的:
@cross_origin(["www.domain1.com, www.domain2.com"])
Run Code Online (Sandbox Code Playgroud)
来自 CORS 的文档:http : //flask-cors.corydolphin.com/en/latest/api.html? highlight= origin#flask_cors.cross_origin
flask_cors.cross_origin(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
允许请求的来源或来源列表。原点可能是正则表达式、区分大小写的字符串或星号
所以,在这里,你需要给list的string。喜欢:
cross_origin(["http://www.domain1.com", "http://www.domain2.com"])
Run Code Online (Sandbox Code Playgroud)
请注意,您在单个字符串中提供了所有域。但是你需要提供一个列表。另请注意,您根据RFC 6454和W3C 建议提供完全限定域名 (FQDN) 。
你也可以做这样的事情:
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
Run Code Online (Sandbox Code Playgroud)
在这里,我们允许应用程序中的每条路径都以/api. 根据您的要求,您可以在此处定义适当的路径。您还可以在此处指定要为其启用 CORS 的域列表的来源。
这是我编写的代码的链接:https : //github.com/Mozpacers/MozStar/
CORS 没有做任何特别的事情;你只需要用一个特殊的头来回复请求,它说Access-Control-Allow-Origin包含域请求来自。
对于飞行前请求,您可以看到如何使用 Flask before_request 和 after_request 装饰器使用自定义标头进行回复:https : //github.com/CuriousLearner/TrackMyLinks/blob/master/src/server/views.py#L130
| 归档时间: |
|
| 查看次数: |
5844 次 |
| 最近记录: |