美文网首页
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