使用Django在服务器端写了一个API,返回一个JSON数据。使用Ajax调用该API:
但是,Chrome浏览器提示错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
这是由于CORS导致的。
安装django-cors-headers这里还有一各发现!在Django中,有人开发了CORS-header的middleware,只在settings.py中做一些简单的配置即可,见:https://github.com/ottoyiu/dj...,开启CORS,没有跨域烦恼,真爽!~
首先安装 pip install django-cors-headers
然后在settings.py里配置一番就可以 INSTALLED_APPS = [
...
'corsheaders',
... ]
MIDDLEWARE_CLASSES = (
...
#尽可能靠前,必须在CsrfViewMiddleware、CommonMiddleware之前。
#我们直接放在第一个位置就好了
'django.middleware.csrf.CsrfViewMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
)
添加参数为true
CORS_ORIGIN_ALLOW_ALL = True
#下面这些可以不用设置
#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
#设置白名单
CORS_ORIGIN_WHITELIST = ( '*')
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',
)