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)
## 安装 ##
通过下载源代码并运行来安装
> 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)
=========================
一个添加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)
## 安装 ##
通过下载源代码并运行来安装
> 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)
项目详情
关闭
哈希值 for django_cors_headers_multi-1.2.0-py2-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c40f17823aa59df3c064234cdc890c56667b5db1ea6aac0172c949dc5c42ed53 |
|
MD5 | e56e5aa2f254fa4020cda5ec80f9af58 |
|
BLAKE2b-256 | 007b00f5ec580b0abc42e7c94de7532626f982a8bb048d9a776aff1d359d23f5 |