跳转到主要内容

django-cors-headers是一个用于处理跨源资源共享(CORS)所需的服务器头的Django应用程序。

项目描述

django-cors-headers-multi
=========================

一个添加CORS(跨源资源共享)头到响应的Django应用。

尽管JSON-P很有用,但它严格限于GET请求。CORS建立在XmlHttpRequest之上,允许开发者进行跨域请求,类似于同域请求。了解更多信息请在此处查看:[http://www.html5rocks.com/en/tutorials/cors/](http://www.html5rocks.com/en/tutorials/cors/)

[![构建状态](https://travis-ci.org/ottoyiu/django-cors-headers.png?branch=master)](https://travis-ci.org/ottoyiu/django-cors-headers)

## 安装 ##
通过下载源代码并运行来安装

> python setup.py install



> pip install django-cors-headers-multi

然后将它添加到你的已安装应用中

INSTALLED_APPS = (
...
'corsheaders',
...
)

你还需要添加一个中间件类来监听响应

MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)

请注意,如果使用 Django 的 `USE_ETAGS = True` 设置,则 `CorsMiddleware` 需要放在 Django 的 `CommonMiddleware` 之前,否则 CORS 头将从 304 未修改的响应中丢失,导致某些浏览器出现错误。

## 配置 ##

将允许进行跨站请求的主机添加到 `CORS_ORIGIN_WHITELIST`,或将 `CORS_ORIGIN_ALLOW_ALL` 设置为 `True` 以允许所有主机。


>CORS\_ORIGIN\_ALLOW\_ALL: 如果为 True,则不会使用白名单,并将接受所有来源

默认值

CORS_ORIGIN_ALLOW_ALL = False

>CORS\_ORIGIN\_WHITELIST: 指定一个授权进行跨站 HTTP 请求的源主机名列表

示例

CORS_ORIGIN_WHITELIST = (
'google.com',
'hostname.example.com'
)


默认值

CORS_ORIGIN_WHITELIST = ()

>CORS\_ORIGIN\_REGEX\_WHITELIST: 指定一个授权进行跨站 HTTP 请求的源主机名的正则表达式列表;当您有大量子域时非常有用。

示例

CORS_ORIGIN_REGEX_WHITELIST = ('^(https?://)?(\w+\.)?google\.com$', )


默认值

CORS_ORIGIN_REGEX_WHITELIST = ()


---


您可以在 settings.py 中选择指定这些选项以覆盖默认值。以下显示默认值


>CORS\_URLS\_REGEX: 指定一个 URL 正则表达式,用于启用发送 CORS 头;当您只想为特定 URL 启用 CORS 时很有用,例如 `/api/` 下的 REST API。

示例

CORS_URLS_REGEX = r'^/api/.*$'

默认值

CORS_URLS_REGEX = '^.*$'

>CORS\_ALLOW\_METHODS: 指定在实际请求中可以使用哪些 HTTP 方法

默认值

CORS_ALLOW_METHODS = (
'GET',
'POST',
'PUT',
'PATCH',
'DELETE',
'OPTIONS'
)

>CORS\_ALLOW\_HEADERS: 指定在实际请求中可以使用哪些非标准 HTTP 头

默认值

CORS_ALLOW_HEADERS = (
'x-requested-with',
'content-type',
'accept',
'origin',
'authorization',
'x-csrftoken'
)

>CORS\_EXPOSE\_HEADERS: 指定要暴露给浏览器的 HTTP 头

默认值

CORS_EXPOSE_HEADERS = ()

>CORS\_PREFLIGHT\_MAX\_AGE: 指定客户端/浏览器可以缓存预检响应的秒数

注意:预检请求是在发出“非简单”请求(例如,内容类型不是 application/x-www-form-urlencoded)时额外发出的请求,以确定服务器实际接受哪些请求。了解更多信息请参阅[这里](http://www.html5rocks.com/en/tutorials/cors/)

默认值

CORS_PREFLIGHT_MAX_AGE = 86400

>CORS\_ALLOW\_CREDENTIALS: 指定是否允许在跨站 HTTP 请求中包含 cookies(CORS)。

默认值

CORS_ALLOW_CREDENTIALS = False

>CORS\_REPLACE\_HTTPS\_REFERER: 指定是否在 CORS 检查通过时替换 HTTP_REFERER 头,以便 CSRF Django 中间件可以与 https 一起工作

注意:启用此功能后,您还需要将 corsheaders.middleware.CorsPostCsrfMiddleware 添加到 django.middleware.csrf.CsrfViewMiddleware 之后以撤销头替换

默认值

CORS_REPLACE_HTTPS_REFERER = False

>CORS\_ENDPOINT\_OVERRIDES: 一组 (regex, override) 对,用于覆盖某些 URL 的设置。

示例

CORS_ENDPOINT_OVERRIDES = [
(r'/api/user/.*$', {
'CORS_ORIGIN_WHITELIST': ['https://secure.mydomain.com'],
}),
(r'/api/public/.*$', {
'CORS_ORIGIN_ALLOW_ALL': True,
}),
]

默认值

CORS_ENDPOINT_OVERRIDES = []

## 更新日志 ##
v0.13 及以上 - [发布说明](https://github.com/ottoyiu/django-cors-headers/releases)

v0.12 - 添加了一个选项,仅针对特定 URL 选择性地启用 CORS

v0.11 - 添加了同时指定多个源主机名的正则表达式的功能

v0.10 - 在源检查中引入端口区分;使用 `urlparse` 以支持 Python 3;为项目添加了测试用例

v0.06 - 添加了对暴露响应头支持

v0.05 - 修复了中间件以确保 CORS 预检请求的正确响应

v0.04 - 为简单请求添加了 Access-Control-Allow-Credentials 控制功能

v0.03 - 错误修复(修复默认变量名称不匹配)

v0.02 - 重构/将默认值拉入单独的文件

v0.01 - 首次发布

## 致谢 ##
向所有贡献者致以敬意

- Otto Yiu - [@ottoyiu](https://github.com/ottoyiu)
- Michael Tom-Wing - [@mtomwing](https://github.com/mtomwing)
- Darrin Massena - [@darrinm](https://github.com/darrinm)
- Paul Dufour - [@pdufour](https://github.com/pdufour)
- Lukasz Balcerzak - [@lukaszb](https://github.com/lukaszb)
- Keita Oouchi - [@keitaoouchi](https://github.com/keitaoouchi)
- Orlando Pozo - [@opozo](https://github.com/opozo)
- Toran Billups - [@toranb](https://github.com/toranb)
- Raymond Penners - [@pennersr](https://github.com/pennersr)
- Markus Kaiserswerth - [@mkai](https://github.com/mkai)
- 以及许多其他贡献者! - [贡献者](https://github.com/ottoyiu/django-cors-headers/graphs/contributors)

项目详情


下载文件

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

源分发

django-cors-headers-multi-1.2.0.tar.gz (8.0 kB 查看哈希值)

上传时间 源代码

构建分发

django_cors_headers_multi-1.2.0-py2-none-any.whl (7.7 kB 查看哈希值)

上传时间 Python 2

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面