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

Flask中使用flask_cors模块处理跨域请求

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

在Flask中处理跨域请求可以使用flask_cors模块来简化这个过程。flask_cors是一个Flask扩展,它提供了一个简单的方法来处理跨域资源共享。

安装flask_cors模块:

pip install -U flask-cors

接下来,在你的Flask应用中导入FlaskCORS

from flask import Flask
from flask_cors import CORS

然后,创建一个Flask应用实例并将其传递给CORS构造函数:

app = Flask(__name__)
CORS(app)

以上代码将启用默认的跨域请求处理,允许来自任何域的请求。

你可以选择传递一些参数给CORS构造函数来配置跨域设置。以下参数是一些常用的参数:

- origins:一个允许的域名列表,可以使用通配符('*')来表示允许所有域名,默认为'*'

- methods:允许的HTTP方法列表,默认为['GET', 'HEAD', 'POST', 'OPTIONS', 'PUT', 'PATCH', 'DELETE']

- allow_headers:允许的请求头列表,默认为['Content-Type', 'Authorization']

- supports_credentials:是否支持发送凭证(如cookies和HTTP身份验证),默认为False

下面是一个使用自定义配置的例子:

app = Flask(__name__)
CORS(app, origins=['https://example.com'], supports_credentials=True)

除了在应用级别启用跨域请求处理之外,你还可以在视图函数级别进行配置。你可以在需要处理跨域请求的视图函数上使用@cross_origin装饰器:

from flask_cors import cross_origin

@app.route('/')
@cross_origin()
def index():
    return 'Hello, world!'

@cross_origin装饰器还可以接受一些参数来配置跨域设置。例如:

@app.route('/')
@cross_origin(origins=['https://example.com'], methods=['GET', 'POST'], supports_credentials=True)
def index():
    return 'Hello, world!'

以上示例中,index()视图函数只允许来自https://example.com域的GET和POST请求,并支持发送凭证。

flask_cors模块还提供了其他一些有用的功能,如在响应中添加CORS头信息、设置最大请求并发等。你可以在flask_cors的官方文档中了解更多功能和用法。

使用flask_cors模块处理跨域请求可以大大简化这个过程,让你能够专注于开发你的Flask应用的核心逻辑。无论是在开发API还是构建前端应用,处理跨域请求都变得更加轻松。