首页 > 解决方案 > 使用 Vue.JS 和 Node.JS 时未定义 Axios 授权标头

问题描述

将授权标头设置到我的 axios 实例时出现问题。

这是我在http://localhost:8080上运行的 Vue.JS 应用程序中的代码:

axios.defaults.headers.common['Authorization'] = 'Bearer ' + token

axios.get(`/users/email/${myemail}`).then(response => {
   var user = response.data.result[0]
   ...
});

这是我在http://localhost:3000上运行的 Node.JS 服务器代码示例:

// Add headers
app.use((req, res, next) => {  
  res.setHeader('Access-Control-Allow-Origin', '*');

  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

  res.setHeader('Access-Control-Allow-Headers', 'Content-type, Accept, X-Access-Token, X-Key, Authorization');

  res.setHeader('Access-Control-Allow-Credentials', true);

  next();
});

和 :

app.use((req, res, next) => {
  var token = req.headers['authorization'];
  if (token) {
    jwt.verify(token, "mysecret", (err, decod) => {
      if (err) {
        res.status(403).send({message: "Access forbidden, wrong token."});
      } else {
        req.decoded = decod;
        next();
      }
    });
  } else {
    res.status(403).send({message: "Access forbidden, no token provided."});
  }
});

req.headers['authorization'] 始终未定义...但是当我通过 Postman 执行获取请求时,授权标头已正确设置,并且我可以在我的 Node.JS 服务器上获取令牌。

我不明白我的错误在哪里......非常感谢您的帮助!

标签: javascriptnode.jsvue.jsaxios

解决方案


您的 axios 标头键是“授权”,但在节点中您获得“授权”。

javascript 对象键区分大小写:D


推荐阅读