Flask配置CORS跨域的实现前端请求限制问题

分类:知识百科 日期: 点击:0

Flask配置CORS跨域的实现前端请求限制

CORS(Cross-Origin Resource Sharing)是一个W3C标准,允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

在Flask中,可以使用Flask-CORS拓展来实现CORS跨域。

使用方法

需要安装Flask-CORS拓展:

pip install flask-cors

安装完成后,在Flask中使用如下:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

如果需要更细粒度的控制,可以使用以下方法:

from flask import Flask
from flask_cors import CORS

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

上面的代码表示,只有当请求的URL以/api/开头,才允许跨域请求。

如果需要更多的控制,可以使用如下方法:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": ["http://example.com", "https://sub.example.com"]}})

上面的代码表示,只有当请求的URL以/api/开头,并且请求来源是http://example.com和https://sub.example.com,才允许跨域请求。

可以使用如下方法来设置更多的CORS选项:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*", "methods": ["GET", "POST"], "allow_headers": ["X-Requested-With", "Content-Type"]}})

上面的代码表示,只有当请求的URL以/api/开头,并且请求来源是任意源,请求方法是GET或POST,请求头中包含X-Requested-With或Content-Type,才允许跨域请求。

也可以使用如下方法来设置CORS支持的响应头:

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*", "expose_headers": ["X-My-Custom-Header"]}})

上面的代码表示,只有当请求的URL以/api/开头,并且请求来源是任意源,响应头中包含X-My-Custom-Header,才允许跨域请求。

也可以使用如下方法来设置CORS支持的响应头:

from flask import Flask
from flask_cors import CORS

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

上面的代码表示,只有当请求的URL以/api/开头,并且请求来源是任意源,最长允许3600秒内的请求,才允许跨域请求。

使用Flask-CORS拓展可以很方便的实现CORS跨域,提升前端请求的安全性。

标签:

版权声明

1. 本站所有素材,仅限学习交流,仅展示部分内容,如需查看完整内容,请下载原文件。
2. 会员在本站下载的所有素材,只拥有使用权,著作权归原作者所有。
3. 所有素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 如果素材损害你的权益请联系客服QQ:77594475 处理。