axios 响应拦截器无法处理过期的 refresh_token (401)

axios response Interceptor unable to handle an expired refresh_token (401)

我在 ComponentDidMount() 中 App.js 的 axios 响应中有以下拦截器,它不适用于所有 axios 请求。

    axios.interceptors.response.use(function (response) {

        if (response)
            return response;
    }, function (error) {

        if (error.response && 401 == error.response.status) {
            console.log('401')
            return Promise.reject(error);
        }
        else {
            return Promise.reject(error);
        }
    });

当我调用 API 并收到 401 错误时,此代码对我不起作用。 我在另一个组件中使用此代码,但无法处理 401 错误

  axios
  .get("/web-api/home/", { headers: headers })
  .then(response => {
    this.setState({
      homeconfig: response.data
    });
  })
  .catch((response) => {
    console.log(response);
  });

您已经在ComponentDidMount中设置了axios拦截器。有可能子组件正在调用此配置之前的请求。 (特别是如果您在子组件的构造函数中调用请求)。因此,您应该在安装任何组件之前进行此配置。将您的配置放在 componentWillMount 或构造函数中(我更喜欢构造函数,因为 componentWillMount 将在较新版本的 react-17 中被弃用)。