Django CORS 策略配置

CORS 发布于 Jan 11, 2021 更新于 Jul 19, 2022

Django CORS 策略配置

CORS: Cross-origin resource sharing 跨域资源共享

比如不同域名或者不同端口,都会或多或少遇到CORS的情况,Django 默认是不允许 CORS 的,需要用模块去配置策略

比较主流的方案是使用 django-cors-headers 模块

安装 django-cors-headers 模块

pip install django-cors-headers

修改 settings.py

# 安装模块
INSTALLED_APPS = [
    ...
    'corsheaders',
    ...
]

#添加中间件
MIDDLEWARE = [
    ...
    'django.middleware.common.CommonMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    # 我的配置下下面这个开了会403 还没研究 反正部署的时候记得去注释
    #'django.middleware.csrf.CsrfViewMiddleware',
    ...
]

配置 CORS 策略

django-cors-headers 模块提供了以下三个配置项

  • CORS_ALLOWED_ORIGINS
  • CORS_ALLOWED_ORIGIN_REGEXES
  • CORS_ALLOW_ALL_ORIGINS

① 白名单

允许的来源,参考如下填写

CORS_ALLOWED_ORIGINS = [
    "https://example.com",
    "https://sub.example.com",
    "http://localhost:8080",
    "http://127.0.0.1:9000"
]

② 正则匹配来源

使用正则匹配来源 URI,匹配成功则允许 CORS,参考如下填写

CORS_ALLOWED_ORIGIN_REGEXES = [
    r"^https://\w+\.example\.com$",
]

③ 允许全部来源⭐

允许所有来源,生产环境千万不要开启,默认值为 False

开发环境可以打开,配置如下

CORS_ALLOW_ALL_ORIGINS = True # 这是开发环境 生产环境请填 False

标签

Noam Chi

An Innovative Quant Developer. 2018 VEX World Final THINK Award🏆