欢迎访问宙启技术站
智能推送

使用flask_cors模块实现Flask应用的跨域请求

发布时间:2023-12-27 06:26:38

Flask-CORS是一个Flask扩展,用于实现Flask应用的跨域请求。跨域请求是指在浏览器端,前端代码从一个域名发起HTTP请求,但是目标资源的域名不同,这种情况下浏览器通常会阻止这种请求。为了解决这个问题,我们可以使用Flask-CORS来配置Flask应用来允许跨域请求。

为了使用Flask-CORS,我们首先需要安装它:

pip install -U flask-cors

安装完成后,我们可以在Flask应用中导入该模块:

from flask import Flask
from flask_cors import CORS

然后,我们需要创建一个Flask应用,并初始化CORS扩展:

app = Flask(__name__)
CORS(app)

这样就完成了Flask-CORS的初始化。默认情况下,Flask-CORS将允许所有的原始域来访问Flask应用的资源。如果我们希望更细粒度地控制哪些资源可以被哪些域名访问,我们可以使用Flask-CORS提供的装饰器或配置选项来设置。

以下是一个使用装饰器来控制跨域请求的例子:

from flask import Flask, jsonify
from flask_cors import CORS, cross_origin

app = Flask(__name__)
CORS(app)

@app.route('/api/data')
@cross_origin()
def get_data():
    data = {'name': 'John', 'age': 30}
    return jsonify(data)

在这个例子中,我们定义了一个用于获取数据的路由/api/data,并且我们使用了cross_origin装饰器来指定允许跨域请求。这样,该路由将允许来自任何域的请求,并返回一个JSON格式的数据。

另一种方法是通过配置选项来控制跨域请求,例如:

from flask import Flask, jsonify
from flask_cors import CORS

app = Flask(__name__)
app.config['CORS_HEADERS'] = 'Content-Type'
CORS(app, resources={r"/api/*": {"origins": "http://example.com"}})

@app.route('/api/data')
def get_data():
    data = {'name': 'John', 'age': 30}
    return jsonify(data)

在这个例子中,我们使用CORS_HEADERS配置选项来指定允许的请求头。然后,我们使用resources参数来指定允许跨域请求的资源和来源域名。在这个例子中,我们只允许http://example.com这个域名访问/api/开头的所有路由。

总结起来,Flask-CORS是一个非常方便的Flask扩展,用于实现Flask应用的跨域请求。我们可以使用装饰器或配置选项来控制允许的请求头和来源域名。通过使用Flask-CORS,我们可以轻松地应对浏览器的跨域限制,提供更好的用户体验。