Flask中使用flask_cors模块处理跨域请求
在Flask中处理跨域请求可以使用flask_cors模块来简化这个过程。flask_cors是一个Flask扩展,它提供了一个简单的方法来处理跨域资源共享。
安装flask_cors模块:
pip install -U flask-cors
接下来,在你的Flask应用中导入Flask和CORS:
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还是构建前端应用,处理跨域请求都变得更加轻松。
