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)
现在对我来说很有用。