Django跨域问题解决方法
1、安装django-cors-headers
python
pip install django-cors-headers
1.1、配置允许访问的IP
python
# 添加允许访问的IP
ALLOWED_HOSTS = ['*'] # 允许全部IP访问项目
2、配置settings.py文件
a.在INSTALLED_APPS里添加"corsheaders"
python
INSTALLED_APPS = [
...
'corsheaders',
...
]
b.在MIDDLEWARE_CLASSES添加配置:
python
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
注意,corsheaders.middleware.CorsMiddleware一定要在django.middleware.common.CommonMiddleware之前
c.在setting.py底部添加
python
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOW_ALL_ORIGINS = True
# 也可以根据需求详细配置
CORS_ORIGIN_WHITELIST = ("*",)
(一般配置以上三项就可以了)
3、配置项参数说明
-
CORS_ALLOW_ALL_ORIGINS: 允许所有域名跨域访问。
- 示例:
CORS_ALLOW_ALL_ORIGINS = True
- 示例:
-
CORS_ALLOWED_ORIGINS: 允许指定的域名跨域访问。
- 示例:
CORS_ALLOWED_ORIGINS = ['https://example.com', 'https://another.com']
- 示例:
-
CORS_ALLOW_METHODS: 允许的HTTP方法。
- 示例:
CORS_ALLOW_METHODS = ['GET', 'POST']
- 示例:
-
CORS_ALLOW_HEADERS: 允许的HTTP头。
- 示例:
CORS_ALLOW_HEADERS = ['Authorization', 'Content-Type']
- 示例:
-
CORS_ALLOW_CREDENTIALS: 是否允许发送凭据(如cookies)。
- 示例:
CORS_ALLOW_CREDENTIALS = True
- 示例:
-
CORS_PREFLIGHT_MAX_AGE: 预检请求的缓存时间(秒)。
- 示例:
CORS_PREFLIGHT_MAX_AGE = 86400
- 示例:
4、常用配置项的详细配置
Python
CORS_ALLOW_METHODS = (
'DELETE',
'GET',
'OPTIONS',
'PATCH',
'POST',
'PUT',
'VIEW',
)
CORS_ALLOW_HEADERS = (
'accept',
'accept-encoding',
'authorization',
'content-type',
'dnt',
'origin',
'user-agent',
'x-csrftoken',
'x-requested-with',
)