axios配置 为什么要刷新之后才能获取到数据呢

这是axios配置

import axios from 'axios'
import qs from 'qs'

let freshToken=localStorage.getItem('freshToken')
let token=localStorage.getItem('token');
// axios 配置
axios.defaults.timeout = 5000;
axios.defaults.baseURL = 'http://192.168.1.120:8080/arbmanager';
axios.defaults.headers.common['X-AUTH-SOURCE'] = 0;
axios.interceptors.request.use((config) => {
  if (token) {
    config.headers['X-AUTH-TOKEN']=token;
    config.headers['X-AUTH-FRESHTOKEN']=freshToken;
  }
  if(config.method  === 'post'){
    config.data = qs.stringify(config.data);
  }
  return config;
},(error) =>{
  console.log('错误参数')
  return Promise.reject(error);
});

axios.interceptors.response.use((res) =>{

  if(res.status!=200){
    return Promise.reject(res);
  }
  return res;

}, (error) => {
  console.log('错误')
  return Promise.reject(error);
});

这是首页ajax调用接口的地址 登录成功之后就会跳转到这里

 created :function () {
        this.$http.post('/manager/account/info.htm',null,{
        })
          .then(response => {
            let newData= JSON.parse(pako.inflate(response.data, { to: 'string' }));
            this.info=newData.result;
          })

之前还是好的 没有更改这边的代码 为什么现在就要进入到首页之后要刷新一遍 才有数据呢

阅读 6.8k
3 个回答

你登录的时候会拿到token对不对?拿到token的时候直接设置到头上就行了啊。不需要在拦截器那里设置。我觉得是你代码的顺序写的有问题?请求是异步的,token还没设置上首页请求已经发出去了。建议你在登录拿到token的时候设置到头上去,然后再跳转页面。

很可能是接口出错了,但是你没有写.catch啊。出错了自己都不知道。异常处理的习惯很重要啊。

xxx.post(xxx)
  .then()
  .catch(err => {
    alert(err.message);
  })

我第一次登录的时候已经把token存进去了,应该axios.js token的获取方式不对


let freshToken=localStorage.getItem('freshToken')
let token=localStorage.getItem('token');
console.log(token)
// axios 配置
axios.defaults.timeout = 5000;
axios.defaults.baseURL = 'http://192.168.1.120:8080/arbmanager';

我是这么写的 这里第一次是打印是没有值的 所以报错了。。没有传 但是我之前也是这么写的 没有报错啊

因为这个地方的token没有获取到 所以下面的判断没有走 就没有加token 刷新之后就获取到了 这里应该怎么改呢。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题