当在Django中进行前后端分离开发时,前端服务器与后端服务器是独立的,也就是不在同一个域名下。这时由浏览器的同源策略,默认不允许不同域间互访数据。为了使前后端服务器能相互访问,可以使用CORS来解决。
安装及配置
1. 安装
pip install django-cors-headers
2. 配置
- 注册:
INSTALLED_APPS = (
...
'corsheaders',
...
)
- 添加中间件:
将其放在MIDDLEWARE配置第一位。
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
...
]
3. 白名单设置
CORS_ORIGIN_WHITELIST
为授权进行跨站点HTTP请求的来源列表,默认为[]。
需要URI协议+主机名+端口指定。
不指明端口时,将使用默认端口(HTTPS = 443,HTTP = 80)。
# CORS
CORS_ORIGIN_WHITELIST = (
'https://example.com' ,
'https://sub.example.com' ,
'http:// localhost:8080' ,
'http://127.0.0.1:9000'
)
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
4. cookies允许
CORS_ALLOW_CREDENTIALS
如果为True,则允许cookie包含在跨站点HTTP请求中。
默认为False。
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
5. 允许的请求方法
不指定CORS_ALLOW_METHODS
时默认允许以下方法跨域请求:
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
)
其他一些设置参考官方文档:https://pypi.org/project/django-cors-headers/