为 Flask-CORS 指定域

2024-03-25

我有一个 Python 脚本作为 Web api,许多域会调用它来获取他们想要的数据。因此,为了使其可行,我需要启用 CORS。我通读了 Flask 文档,但没有找到指定多个域以允许 CORS 的方法。

以下是启用 CORS 的代码片段:

from flask_cors import cross_origin

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

上面的代码片段为所有域启用了 CORS。我想将其限制为某些特定的域列表。我只想知道如何指定这个列表。这是我正在尝试做的事情:

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

来自 CORS 的文档:http://flask-cors.corydolphin.com/en/latest/api.html?highlight=origin#flask_cors.cross_origin http://flask-cors.corydolphin.com/en/latest/api.html?highlight=origin#flask_cors.cross_origin

flask_cors.cross_origin(*args, **kwargs)

来源或允许发出请求的来源列表。起源) 可以是正则表达式、区分大小写的字符串,或者 星号

所以,这里你需要给出list of string. Like:

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

请注意,您在单个字符串中给出了所有域。但您需要提供一份清单。另请注意,您按照以下方式提供完全限定域名 (FQDN):RFC 6454 https://www.rfc-editor.org/rfc/rfc6454#section-7.1 and W3C 推荐 https://www.w3.org/TR/cors/#access-control-allow-origin-response-header.

你也可以这样做:

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

在这里,我们允许应用程序中以以下内容开头的每条路径/api。根据您的要求,您可以在此处定义适当的路径。您还可以在此处指定要为其启用 CORS 的域列表的来源,如下所示:

cors = CORS(app, resources={r"/api/*": {"origins": ["http://www.domain1.com", "http://www.domain2.com"]}})

这是我编写的代码的链接:https://github.com/Mozpacers/MozStar/ 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 https://github.com/CuriousLearner/TrackMyLinks/blob/master/src/server/views.py#L130

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 Flask-CORS 指定域 的相关文章

随机推荐