未使用Vue.js在mounted()中调用axios拦截器

kgsdhlau  于 2022-11-05  发布在  iOS
关注(0)|答案(1)|浏览(160)

我在我的Vue应用程序中使用JWT,并且需要使用Axios提交每个 AJAX 请求所需的Authorization头。在我的“main.js”文件中,我设置了一个拦截器来完成以下任务:

axios.interceptors.request.use(req => {
  if(sessionStorage.getItem('token')) {
    req.headers['Authorization'] = auth.getAuthHeader();
  }
  return req;
});

然而,在一个组件中,我在mounted()中发出了 AJAX 请求,因此:

mounted() {
  this.salePrep();
}

方法是:

async salePrep(){
  const response = await this.$axios.get(contextPath + "/sale/prep");
  this.$store.commit("setData", response.data);
},

由于我不明白的原因,axios拦截器没有被调用。是否有什么关于mounted()阶段的东西我不明白?为什么这个 AJAX 调用会不同?一旦组件被加载,所有的AJAX调用都成功地使用了拦截器--也就是说,Authorization头被设置了。只是没有mounted()中的那个。
编辑:我已经确定,在'created()'中的调用也是如此。

bbuxkriu

bbuxkriu1#

没有能力发表评论,所以这里有一个答案。
确保在main.js中创建Vue示例之前创建拦截器。

相关问题