我正在使用带有打字稿的axios。
我有一个编码如下的简单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);
});
我想做的是,未经身份验证时,我需要重定向到其他位置(Identityserver SSO页面,但这与我无关)。
因此,如果未通过正确的位置进行身份验证,则调用我的API时会返回302状态代码。
但是该axios不会自动重定向到该位置。
如果我必须手动重定向,那还是可以的。
但是我得到的是“ error.response”未定义。
所以现在如何重定向?因为“ error.response”未定义,我无法检测状态代码。
在网络选项卡中,显示如下。
响应选项卡显示如下。没有可用的响应数据... !!!
我在做什么错?
据我所知,302代码是由浏览器处理的。回答302之后,浏览器将接收由位置标头传递的页面,并将其传递给Axios。因此,您可以在response.data
中找到html页面。同样在response.request.responseURL
中,您可以找到需要重定向到的URL。
我认为以下是该问题的答案。还是我不确定。