302 状态 axios 的响应未定义

Ano*_*tor 4 ajax typescript identityserver4 axios

我正在使用 axios 和 typescript。

我有一个简单的 axios 拦截器,编码如下。

// Add a response interceptor
axios.interceptors.response.use((response: AxiosResponse<any>) => {
  // Do something with response data
  return response;
}, (error: any) => {
  // Do something with response error
  // Here "error.response" is undefined. 
  return Promise.reject(error);
});
Run Code Online (Sandbox Code Playgroud)

我想做的是在未经身份验证时需要重定向到其他位置(identityserver SSO 页面,但我猜这与这里不相关)。

因此,当调用我的 API 时,如果未通过正确的位置进行身份验证,则会返回 302 状态代码。

但 axios 不会自动重定向到该位置。

如果我必须手动重定向,那仍然可以。

但我得到的“error.response”未定义。

那么现在我该如何重定向?因为由于“error.response”未定义,我无法检测到状态代码。

在网络选项卡中,它显示如下。

在此输入图像描述

响应选项卡显示如下。没有可用的响应数据...!!!

在此输入图像描述

我究竟做错了什么?

小智 5

据我了解 302 代码是由浏览器处理的。回答302后浏览器将接收通过location header传递的页面,并将其传递给axios。所以你可以在 中找到页面 html response.data。您还response.request.responseURL可以在其中找到需要重定向到的 URL。

所以我做了这样的事情:

axios.post('.', Data)
     .then(response => {
         if (response.status === 200) {
             window.location.href = response.request.responseURL;
         }
     })
     .catch(error => {console.log(error)});
Run Code Online (Sandbox Code Playgroud)

现在对我来说很有用。