javascript - header 未显示在获取响应中

标签 javascript node.js fetch-api

我可以在 Chrome DevTools 中看到 header “x-auth-token”。 enter image description here

但是, header 未显示在我的提取响应中。 请协助,以便我可以使用 header 数据。

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

NodeJS 中间件 - cors.js

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

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 - 我的获取请求

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)
  })
}

这是在我成功获取请求的 console.log 中的 Chrome 控制台中。 header 响应中的 header 为空。请指教。仅供引用,这是用户测试数据。 enter image description here

最佳答案

Header对象不为空。它只是不是一个常规对象,所以它没有将其内容作为其实例的属性。因此,您不会在 console.log View 中看到 header /值。

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

var token = response.headers.get('x-auth-token');
console.log(token);

您也可以使用 for ... of 循环遍历它

for(const header of response.headers){
   console.log(header);
}

演示

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

关于javascript - header 未显示在获取响应中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50779681/

相关文章:

json - 服务器如何检测使用 fetch API 发出的请求?

javascript - 子菜单列表与父列表对齐?

javascript - 为什么 "sticky"javascript 不能在 Firefox/IE 中运行?

javascript - .net mvc 4应用程序-从ajax调用 Controller 中的函数

javascript - 正则表达式 : match either of two conditions?

javascript - 如何在不复制代码的情况下去除耦合?

javascript - 告诉 fetch() 根本不发送 Content-Type header

node.js - fs.createWriteStream 错误 :ENOENT

javascript - 表达和拆分路线到单独的文件

javascript - 未捕获( promise )SyntaxError : Unexpected token ' in fetch function