1. 安装包
安装 django-cors-headers 包,命令 pip install django-cors-headers
2. 注册app
在settings文件中,INSTALLED_APPS中写入’corsheaders’,,注意注册顺序问题,跨域app需要在自己app的前面。
// setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'corsheaders', # 跨域app
'webApp.apps.WebappConfig', # 我的web app
]
3. 配置中间件
在settings文件中,MIDDLEWARE中写入’corsheaders.middleware.CorsMiddleware’,,
注释掉csrf认证的中间件。
// setting.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware', # 跨域中间件
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'webApp.middleware.LoginCheckMiddleware',
]
4. 配置跨域的参数
在settings文件中,添加以下几行代码,即可解决跨域问题。
// setting.py
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True # 指明在跨域访问中,后端是否支持对cookie的操作
# 白名单配置
# 允许的请求方式
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',
)