跨域问题:浏览器同源策略;前后端在不同域会导致跨域问题;不同源之间的网站通信就是跨域
解决方案:CORS扩展
1. 安装django-cors-headers
pip install django-cors-headers
2. 配置settings.py文件
# 添加应用
INSTALLED_APPS = [
...
'corsheaders',
...
]
# 中间层设置
MIDDLEWARE_CLASSES = (
'corsheaders.middleware.CorsMiddleware', # 注意顺序
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
...
)
# 跨域增加忽略
CORS_ORIGIN_ALLOW_ALL = True # 允许所有主机跨域
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
# 可添加白名单
CORS_ORIGIN_WHITELIST = (
'127.0.0.1:8080',
...
) # 单个配置
CORS_ORIGIN_REGEX_WHITELIST =(r'^(https?://)?(\w+\.)?jim\.com $',) # 正则配置
# 可配置请求方法
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
# 可配置请求头
CORS_ALLOW_HEADERS = (
'XMLHttpRequest',
'X_FILENAME',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
'Pragma',
)
注意:中间件CorsMiddleware必须放在django-common中间件的前一个
OK.