首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取响应中未显示标头

获取响应中未显示标头
EN

Stack Overflow用户
提问于 2018-06-10 08:39:55
回答 2查看 16.9K关注 0票数 11

我可以在Chrome DevTools中看到标题"x-auth-token“。

但是,报头没有显示在我的fetch响应中。请协助,以便我可以使用标题数据。

我使用NodeJS作为后端API,使用ReactJS作为我的前端。这些是我的文件。

NodeJS中间件- cors.js

代码语言:javascript
复制
module.exports = function enableCorsSupport(app) {
  app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
    res.header("Access-Control-Allow-Headers", "Content-Type, x-auth-token");
    res.header("Access-Control-Expose-Headers", "x-auth-token");
    next();
  })
}

NodeJS路由- users.js

代码语言:javascript
复制
router.post('/login', async (req, res) => {

  // NOTE: code left out so post would be smaller

  const token = user.generateAuthToken();
  res.header('x-auth-token', token).send(_.pick(user, ['_id', 'firstName', 'email', 'isAdmin']));
})

ReactJS -我的获取请求

代码语言:javascript
复制
fetch('http://localhost:4000/api/users/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      email: this.props.email,
      password: this.props.password
    })
  })
  .then(res => {
    console.log('res.headers', res.headers)
    return res.json()
  })
  .then(data => {
    console.log(data);
  })
  .catch((err) => {
    console.log(err)
  })
}

这是在我的Chrome控制台中,在我成功的fetch请求中的console.log。header响应中的header为空。请给我建议。仅供参考这是用户测试数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-10 08:48:48

Header对象不为空。它不是一个常规的对象,所以它的内容不是它的实例上的属性。因此,您不会在console.log视图中看到标题/值。

要获取特定标头的值,需要使用get()方法

代码语言:javascript
复制
var token = response.headers.get('x-auth-token');
console.log(token);

您也可以使用for ...遍历它。的

代码语言:javascript
复制
for(const header of response.headers){
   console.log(header);
}

演示

代码语言:javascript
复制
fetch('https://cors-anywhere.herokuapp.com')
.then(res=>{
  for(const header of res.headers){
    console.log(`Name: ${header[0]}, Value:${header[1]}`);
  }
});

票数 34
EN

Stack Overflow用户

发布于 2021-03-10 11:22:18

公开x-auth-token标头的另一种方法是

代码语言:javascript
复制
  res
    .header("x-auth-token", token)
    .header("access-control-expose-headers", "x-auth-token")
    .json(data);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50779681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档