解决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',
)

注意:localhost127.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',
)

参考文档