为CORS支持添加装饰器的Flask扩展
项目描述
这是一个处理跨源资源共享(CORS)的Flask扩展,使得跨源AJAX成为可能。
该软件包有一个简单的哲学:当你想启用CORS时,你希望在一个域上的所有用例中启用它。这意味着无需与不同的允许头部、方法等纠缠。
默认情况下,由于安全影响,禁用了跨域提交cookies。请参阅文档了解如何启用认证请求,并在这样做之前请确保添加某种CSRF保护!
安装
使用pip或easy_install安装扩展。
$ pip install -U flask-cors
用法
该软件包公开了一个Flask扩展,默认情况下,所有路由和所有来源都启用了CORS支持。它允许对每个资源级别的所有CORS头进行参数化。该软件包还包含一个装饰器,供喜欢这种方法的用户使用。
简单用法
在最简单的情况下,使用默认参数初始化Flask-Cors扩展,以允许所有路由上所有域的CORS。请参阅文档中的完整选项列表。
from flask import Flask
from flask_cors import CORS
app = Flask(__name__)
CORS(app)
@app.route("/")
def helloWorld():
return "Hello, cross-origin-world!"
资源特定的CORS
或者,您可以通过传递一个字典作为resources选项,将路径映射到一组选项,在资源级别和来源级别上指定CORS选项。请参阅文档中的完整选项列表。
app = Flask(__name__)
cors = CORS(app, resources={r"/api/*": {"origins": "*"}})
@app.route("/api/v1/users")
def list_users():
return "user example"
通过装饰器指定路由特定的CORS
此扩展还公开了一个简单的装饰器,可以用来装饰Flask路由。只需在调用Flask的@app.route(..)下方添加@cross_origin(),即可在给定的路由上允许CORS。请参阅装饰器文档中的完整选项列表。
@app.route("/")
@cross_origin()
def helloWorld():
return "Hello, cross-origin-world!"
文档
有关完整选项列表,请参阅完整的文档
故障排除
如果事情没有按预期进行,请启用日志记录以帮助理解底层发生了什么,以及为什么。
logging.getLogger('flask_cors').level = logging.DEBUG
测试
在test/中包含了一组简单的测试。要运行,请安装nose,然后简单地调用nosetests或python setup.py test来执行测试。
如果nosetests因不再与较新的Python版本兼容而无法为您工作,您可以使用pytest来运行测试。
贡献
有问题、评论或改进建议?请在本Github上创建一个问题,@corydolphin发推文或在电子邮件中发送给我。我会尽最大努力以任何可能的方式包含提出的每个贡献。
致谢
此Flask扩展基于Armin Ronacher编写的HTTP访问控制装饰器。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
flask_cors-5.0.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5aadb4b950c4e93745034594d9f3ea6591f734bb3662e16e255ffbf5e89c88ef |
|
MD5 | a6e8202cc008ef6f70ce75a7ae7f8d9d |
|
BLAKE2b-256 | 4fd0d9e52b154e603b0faccc0b7c2ad36a764d8755ef4036acbf1582a67fb86b |
Flask_Cors-5.0.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9e307d082a9261c100d8fb0ba909eec6a228ed1b60a8315fd85f783d61910bc |
|
MD5 | 66199b77d52f670fed222a27689fe68d |
|
BLAKE2b-256 | 56071afa0514c876282bebc1c9aee83c6bb98fe6415cf57b88d9b06e7e29bf9c |