当前位置: 首页 > 工具软件 > vue-django > 使用案例 >

django + vue-admin-template解决CSRF Failed: CSRF token missing or incorrect 问题

邹嘉荣
2023-12-01

背景:vue使用Network进行登录的时候 报错 403,但是在localhost的时候就没问题,进行了一下对比,network header中多了一个cookie,local中就没有,再结合django默认有csrf跨站点请求伪造,翻了翻文档,得知需要在header中添加X-CSRFToken,解决办法如下:

解决办法:
在vue-admin-template utils/request.js中加入获取csrftoken的方法
原先的方法是在有token的情况下vue才会在header中加入token,但是登录的时候是没有token状态的,所以添加一下csrftoken就可以了

const getCookie = function(name) {
  var value = '; ' + document.cookie
  var parts = value.split('; ' + name + '=')
  if (parts.length === 2) return parts.pop().split(';').shift()
}
// request interceptor
service.interceptors.request.use(
  config => {
    // do something before request is sent

    if (store.getters.token) {
      // let each request carry token
      // ['X-Token'] is a custom headers key
      config.headers['Authorization'] = 'Token ' + getToken()
      config.headers['X-CSRFToken'] = getCookie('csrftoken')
    } else {
      config.headers['X-CSRFToken'] = getCookie('csrftoken')
    }
    return config
  },

 类似资料: