Express 特快专递及;Csurf拒绝Vue(Axios)post请求

Express 特快专递及;Csurf拒绝Vue(Axios)post请求,express,vue.js,axios,Express,Vue.js,Axios,我目前正在处理表单,并决定测试在更改中期注册后向服务器发送电子邮件,并向用户提供响应反馈 在创建Vue组件时,我获得csrf令牌并将其存储起来,以备将来发布。我将其作为“X-CSRF-Token”附加到标题上。我发送了令牌,但仍然收到无效的CSRF令牌错误。我已经验证了标头中的数据,并且csrf令牌实际上正在发送,但只是被拒绝,或者标头缺少一些内容 下面是我尝试发帖的路线 // Users Check Email Post Route router.post('/checkEmail',fun

我目前正在处理表单,并决定测试在更改中期注册后向服务器发送电子邮件,并向用户提供响应反馈

在创建Vue组件时,我获得csrf令牌并将其存储起来,以备将来发布。我将其作为“X-CSRF-Token”附加到标题上。我发送了令牌,但仍然收到无效的CSRF令牌错误。我已经验证了标头中的数据,并且csrf令牌实际上正在发送,但只是被拒绝,或者标头缺少一些内容

下面是我尝试发帖的路线

// Users Check Email Post Route
router.post('/checkEmail',function(req,res,next){
  email = req.body.email
  console.log(email)
  User.findOne(function(err,user){
    if (err) { return res.json({ err:err })}
    else { return res.json({ user:true }) }
  })
})
以下是Vue中用于发布的方法

checkEmail: function () {
    var headers = {
      'Accept': 'application/json',
      'Access-Control-Allow-Origin': '*' ,
      'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
      'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, 
       Accept',
      'Content-Type':'application/x-www-form-urlencoded',
      'X-CSRF-Token':this.$store.getters.getCSRF,
    }

    axios.post('http://localhost:8000/api/users/checkEmail', {
      email: this.user.Email
    },headers )
    .then(function (response) {
      console.log(response)
    })
    .catch(function (error) {
      console.log(error.response)
    });
},
这个问题很常见,我已经浏览了20多篇文章,尝试了他们的解决方案,但毫无帮助。我曾尝试在同一路线上独立使用csurf(不起作用)。我试过各种各样的标题。非常感谢你的帮助


编辑:上传以在发布前显示正确的标题

所以我意识到csurf寻找两件事。一个cookie(从错误中看这不是很明显,但无论如何)和通过头发送的令牌。Axios默认情况下显然不支持Cookie,因此我决定采用JWT头方法。

错误消息说存在无效的csrf令牌。您确定添加的正确吗?@AmrAly Yeah,在发送标题之前,我打印了标题,它们很好。在发送请求之前,请尝试控制台log
this.$store.getters.getCSRF
,以检查它是否正确exists@AmrAly是的,它存在
checkEmail: function () {
    var headers = {
      'Accept': 'application/json',
      'Access-Control-Allow-Origin': '*' ,
      'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',
      'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, 
       Accept',
      'Content-Type':'application/x-www-form-urlencoded',
      'X-CSRF-Token':this.$store.getters.getCSRF,
    }

    axios.post('http://localhost:8000/api/users/checkEmail', {
      email: this.user.Email
    },headers )
    .then(function (response) {
      console.log(response)
    })
    .catch(function (error) {
      console.log(error.response)
    });
},