解决api跨域请求有好几种方法, 可以通过jsonp,在apache或nginx中设置,或者在请求头里设置,本文我们采用django库cros来解决跨域问题
注:这个是ajax接收服务器端的实现
安装
pip install django-cors-headers
配置
INSTALLED_APPS = [
...
'corsheaders',
...
]
注意:CorsMiddleware必须放在CommonMiddleware前面
MIDDLEWARE_CLASSES = (
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
设定能够与后台通信的domain的白名单
CORS_ORIGIN_WHITELIST = (
# '<YOUR_DOMAIN>[:PORT]',
#'*'
'127.0.0.1:8080',
'localhost:8080',
'localhost',
)
注意:localhost
和127.0.0.1
效果不一样,需区别对待
如果想允许所有的,可以设置
CORS_ORIGIN_ALLOW_ALL = True
其他配置
CORS_ALLOW_CREDENTIALS = True
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',
)