首页 > 解决方案 > 如何将axios标头中的数据获取到Vue中的组件

问题描述

我有一个 axios apiClient,我正在尝试将电子邮件存储localStorage到标题中。在我的组件中,我尝试使用

response.headers['email']

并将其分配给电子邮件变量,但我没有定义。我收到了电子邮件,localStorage但无法在组件中收到它。任何帮助将不胜感激。

爱讯

const apiClient = axios.create({
  baseURL: `${API}`,
  withCredentials: false,
  headers: {
     Accept: "application/json",
             "Content-Type": "application/json"
    }
});

apiClient.interceptors.request.use(function (config) {
  let token = JSON.parse(localStorage.getItem('token'));
  let email = JSON.parse(localStorage.getItem('email'));
  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
    config.headers.email = `${email}`;
  }
  return config;
}, function (err) {
  return Promise.reject(err);
});

这是我需要电子邮件数据的组件中的方法

methods: {
  getOrders(){
    service.getAllOrders()
    .then(response => {
      this.email = response.headers['email'];
      console.log("email:", this.email)
    })
  }
}

getAllOrders()做 axios get

标签: javascriptvue.jsvuejs2axiosvue-component

解决方案


您设置了请求拦截器,但您正在检查响应标头,这是两个不同的对象。响应来自服务器,不受请求拦截器的影响。

您可以为响应创建不同的拦截器:

apiClient.interceptors.response.use((response) => {
    response.headers.email = JSON.parse(localStorage.getItem('email'));
    return response;
});

推荐阅读