Как получить данные в заголовке 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.info("email:", this.email)
    })
  }
}

getAllOrders() делает аксиос get.

🤔 А знаете ли вы, что...
С JavaScript можно создавать расширения для различных платформ, таких как Adobe Acrobat и Microsoft Office.


1
433
1

Ответ:

Решено

Вы устанавливаете перехватчик запроса, но проверяете заголовок ответа, а это два разных объекта. Ответ исходит от сервера и не будет затронут перехватчиком запросов.

Вы можете создать другой перехватчик для ответа:

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