【问题标题】:How to set headers in api call om nodeJs?如何在 api 调用 om nodeJs 中设置标题?
【发布时间】:2022-01-21 21:35:56
【问题描述】:

我正在 nodeJs 中进行身份验证。我已经成功创建了登录 API,它在邮递员上运行良好。我被困在客户端。它不会在标头上设置令牌。我正在使用护照,jwt 进行身份验证。

我的代码是:

app.post('/login', (req, res, next) => {
  var name = {
    name: req.body.name,
    password: req.body.password
  }
  // let m = '';
  // console.log(name)
  request({
    url: "http://localhost:3000/api/login",
    method: "POST",
    json: true,   // <--Very important!!!
    body: name
  }, function (error, response) {
    if (response.body.error == true) {
      req.flash('errorMsg', response.body.message);
      res.redirect('/');
    }
    else {

      // localStorage.setItem('token', response.body.token);
      // console.log(localStorage.getItem('token'))
      // req.headers['authorization'] = response.body.token;
      // res.setHeader('authorization', response.body.token);
      // req.session['token'] = response.body.token;
      // console.log(req.session['token'])
      // res.set({
      //    'Content-Type': 'text/plain',
      //    'authorization':response.body.token
      //   });
      //   res.setHeader('authorization', response.body.token);
      //   req.headers['authorization'] = response.body.token;


      res.redirect('/secret');
      next();
    }
  });
  // console.log(m);
});

而我的中间件是:

app.use((req, res, next) => {
  var token = req.body.token || req.session['token'] || req.query.token || req.headers['x-access-token'] || localStorage.getItem('token');
  req.headers['authorization'] = token;
  console.log(req.session['token'], token)
  console.log(req.headers['authorization'], config.jwtSecret);
  if (token) {
    jwt.verify(token, config.jwtSecret, (err, decoded) => {
      if (err) {

        res.json({
          'message': 'Failed to authenticate user'
        });
      } else {
        req.decoded = decoded;
        next();
      }
    });
  } else {
    // logger.warn('Unauthorized');
    return res.sendStatus(401);
  }
  console.log(req.headers['authorization'])
});

我已尽一切可能在标头中设置令牌,但效果不佳。如果我在 app.use 中间件上获得我的令牌,那么我可以轻松验证令牌,但它不允许设置我的令牌。

我该怎么做??

【问题讨论】:

  • 我没试过这个代码。但我有一个想法,即使用整个信息来查看所需信息您可以只记录 'req' 的值而不是 'req.headers['something']' ....

标签: node.js express passport.js


【解决方案1】:

最好的方法!

router.get('/your-route', async (req, res) => {
    //...
    res.setHeader('your-key', 'your-value');
    //..
})

您可以在浏览器或邮递员的标题选项卡中看到输出 your-key: your-value

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    相关资源
    最近更新 更多