Django 处理跨域的配置、前台处理ajax

一. Django处理跨域

  跨域的处理方式有很多,使用最多的就是CORS(跨域资源共享),接下来大致提一下django中处理跨域的配置。

  首先安装django-cors-headers模块:

pip install django-cors-headers

   在settings.py中配置:

'''
# 注册app
INSTALLED_APPS = [
    ...
    'corsheaders'
]

# 添加中间件
MIDDLEWARE = [
    ...
    'corsheaders.middleware.CorsMiddleware'
]

# 允许跨域源,True时表示允许所有跨域源,一般都设置False,通过白名单允许部分跨域
CORS_ORIGIN_ALLOW_ALL = False

# 白名单,配置指定跨域域名
CORS_ORIGIN_WHITELIST = [
    'http://www.luffy.cn:8080'
]

# 允许ajax请求携带cookie
CORS_ALLOW_CREDENTIALS = True


# 注:前台请求头携带参数,中间件拒绝Access-Control-Allow-Headers错误,中间件要设置 default_headers
from corsheaders import defaults
在 default_headers 中添加 '前端ajax请求头里面的字段名'

# 也可以直接settings.py配置以下内容
#跨域增加忽略
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = ()

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'
)
'''

 二. 前台处理ajax

"""
1.安装axios
cnpm install axios --save

2.src/main.js配置
// 允许ajax发送请求时附带cookie
axios.defaults.withCredentials = true;
Vue.prototype.$axios = axios; // 把对象挂载vue中


# axios发生ajax请求
$axios({
    utl: 'http://api.example.com/test',  // 请求接口
    headers: {},  // 携带请求头
    method: 'post',  // 还可以为post
    data: {},  // get通过param: {} 提交数据
})
"""

 

posted @ 2019-07-25 21:39  maoruqiang  阅读(251)  评论(0编辑  收藏  举报