美文网首页
django+vue axios的post请求403 csrf

django+vue axios的post请求403 csrf

作者: Felicity0512 | 来源:发表于2019-04-15 14:30 被阅读0次

Django-REST-framework的所有post请求都需要带上csrftoken。
resfull框架自带一个csrftoken.js但是是jq写的,vue不想用jq。
然后想办法把自定义axios,在全局header信息中加入X-CSRFToken。

vue-cli安装的vue,可以勾选上axios插件。
src>plugins此目录下,会自动生成axios.js的配置文件。

修改配置文件:
1、添加切割字符串的方法;
2、使用axios.interceptors.request.use()请求拦截器,添加X-CSRFToken的header信息。

const _axios = axios.create(config);

//切割字符串
let getCookie = function (name, token) {
  var value = '; ' + token
  var parts = value.split('; ' + name + '=')
  if (parts.length === 2) return parts.pop().split(';').shift()
}

_axios.interceptors.request.use(
  function(config) {
    // 在post请求前统一添加X-CSRFToken的header信息
    let token = document.cookie;
    if(token && config.method == 'post'){
      config.headers['X-CSRFToken'] = getCookie('csrftoken',token);
    }
    return config;
  },
  function(error) {
    // Do something with request error
    return Promise.reject(error);
  }
);

axios

相关文章

网友评论

      本文标题:django+vue axios的post请求403 csrf

      本文链接:https://www.haomeiwen.com/subject/kveuwqtx.html