前端axios拿不到401的解决办法
当使用Axios进行前端HTTP请求时,如果后端返回了401 Unauthorized响应,意味着请求没有通过身份验证,客户端需要进行某些操作来解决这个问题。
解决方法:
- 捕获401错误:在Axios的响应拦截器中检查错误,并在捕获到401错误时执行特定的操作。
axios.interceptors.response.use(null, (error) => {
if (error.response && error.response.status === 401) {
// 如果是401错误,执行登录或者刷新令牌等操作
// 例如,重定向用户到登录页面
window.location.href = '/login';
}
return Promise.reject(error);
});
- 刷新或重新获取令牌:如果你的应用使用了像JWT这样的令牌机制,当令牌过期时,你可能需要请求新的令牌。
if (error.response && error.response.status === 401 && !isRefreshing) {
isRefreshing = true;
// 此函数用于刷新令牌,并在成功后重新发送原始请求
axios.post('/api/token/refresh', {
// 发送一些必要的参数以刷新令牌
}).then(async (response) => {
axios.defaults.headers.common['Authorization'] = 'Bearer ' + response.data.access_token;
// 原始请求需要重新发送
const originalRequest = error.config;
originalRequest.headers['Authorization'] = 'Bearer ' + response.data.access_token;
return axios(originalRequest);
}).catch(() => {
// 如果刷新令牌失败,可能需要重定向用户到登录页面
window.location.href = '/login';
}).finally(() => {
isRefreshing = false;
});
}
- 清除已经过期的令牌或凭据,并引导用户重新登录。
确保在前端进行适当的错误处理,并在后端设置合适的认证和授权机制。
评论已关闭