在django中使用django-cors-headers

0
(0)

CORS全称是Cross-Origin Resource Sharing,这个机制使用了一个额外的HTTP响应头来赋予当前user-agent(浏览器)获得在当前源(origin)下使用非同源资源的权限。 非同源就是Cross-Origin的概念,这里边的权限就是访问非同源的资源权限,出于安全的原因,浏览器限制从脚本内发起跨源的HTTP请求,也就意味着限定了当前web应用程序只能请求与当前同域(同源)的HTTP资源,除非使用CORS头信息。

在使用前后端分离的方式开发应用程序时,经常会碰到 A域名提供后端接口,B域名下的页面脚本调用A域名的接口, 此时,就需要在A域名的接口响应里增加CORS响应头Access-Control-Allow-Origin。

使用django开发的接口,默认会使用默认策略,SAME-ORIGIN,也就是不允许外站访问。django-cors-headers组件提供了一种方式, 可以统一管理CORS配置。

第一步,安装

pip install django-cors-headers

第二步,修改settings.py

INSTALLED_APPS = [
    ...,
    "corsheaders",
    ...,
]
...
# 必须把CorsMiddleware 放在CommonMiddleware前面,否则无效
# 如果项目中使用了WhiteNoise,也要把CorsMiddleware放在WhiteNoiseMiddleware前面
MIDDLEWARE = [
    ...,
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",
    ...,
    "whitenoise.middleware.WhiteNoiseMiddleware",
    ...,
]

接下来,就是在settings.py中添加配置项

# 列表形式, 组件早期版本,该配置项的名称是 CORS_ORIGIN_WHITELIST
CORS_ALLOWED_ORIGINS = [
    "https://example.com",
    "https://sub.example.com",
    "http://localhost:8080",
    "http://127.0.0.1:9000",
]
# 正则形式
CORS_ALLOWED_ORIGIN_REGEXES = [
    r"^https://\w+\.example\.com$",
]
# 如果配置允许所有源,则以上两项配置无效
CORS_ALLOW_ALL_ORIGINS = True
# 如果只需要对/api/开头的接口启用配置,使用以下配置,默认值是全部接口r'^.*$'
CORS_URLS_REGEX = r"^/api/.*$"

更详细的参数,参考链接:https://pypi.org/project/django-cors-headers/

2025/9/14 于 北京 上东廓

这篇文章有用吗?

点击星号为它评分!

平均评分 0 / 5. 投票数: 0

到目前为止还没有投票!成为第一位评论此文章。

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注