Django CORS 策略配置
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