跳转到主要内容

为CORS支持添加装饰器的Flask扩展

项目描述

Build Status Latest Version Supported Python versions License

这是一个处理跨源资源共享(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,然后简单地调用nosetestspython setup.py test来执行测试。

如果nosetests因不再与较新的Python版本兼容而无法为您工作,您可以使用pytest来运行测试。

贡献

有问题、评论或改进建议?请在本Github上创建一个问题,@corydolphin发推文或在电子邮件中发送给我。我会尽最大努力以任何可能的方式包含提出的每个贡献。

致谢

此Flask扩展基于Armin Ronacher编写的HTTP访问控制装饰器

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

flask_cors-5.0.0.tar.gz (31.0 kB 查看哈希值)

上传时间

构建分发

Flask_Cors-5.0.0-py2.py3-none-any.whl (14.5 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者