从 axios 的响应头中获取数据

Posted

技术标签:

【中文标题】从 axios 的响应头中获取数据【英文标题】:Getting data from response headers in axios 【发布时间】:2019-11-26 20:33:42 【问题描述】:

我正在使用 Axios 发出一个发布请求,此调用在响应标头和正文中返回数据。在标题中,它返回一个x-auth-token,我想获取此令牌的值,但它返回:

undefined is not an object

这是我的做法:

axios.post('app.com/api/login', data)
  .then(response => 
    console.log(response.headers.get("x-auth-token"));
  )
  .catch(error => 
    console.log(error)
);

【问题讨论】:

【参考方案1】:

在 Github 评论中,明确提到了如何检索标头 see

fetchFromServer = async(data) => 
    const response = await axios.post(url, data, headers)
    console.log(response.headers)

如果您可以看到日志中的所有标题,您可以尝试其中任何一种来从响应中获取数据。要检查您的回复中可用的密钥,您可以尝试

console.log(Object.keys(response.headers))

    console.log(response.headers.your_required_key(例如 response.headers.token)

    console.log(response.headers["your_required_key"] 如果上述失败。 (console.log(response.headers["content-type"])

【讨论】:

如果你下载一个文件,并不是所有的头文件都出现在 axios 响应中,尽管你可以在 F12 工具中看到它【参考方案2】:

您需要先解析您的响应。

axios
  .post('app.com/api/login', data)
  .then(response => response.json())
  .then(response => 
     console.log(response.headers.get("x-auth-token"));
  )
  .catch(error => 
     console.log(error)
  );

之后,在第二个then 中,您可以记录整个响应并找到您的 x-auth-token 所在的位置。

【讨论】:

以上是关于从 axios 的响应头中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Axios 获取请求中获取响应头参数?

Vue.js - 如何通过 axios 响应数据从对象中获取特定字段

使用 jQuery 从响应头中获取图像文件大小

Django + Vuejs 无法从响应头中获取 Csrftoken

如何将 map() 与来自 axios 响应的数据一起使用?

Axios 响应数据未加载到 Laravel 中的 Vue 组件上