在React中处理HTTP 401未授权响应通常涉及到前端应用与后端API的交互。当后端返回401状态码时,意味着请求未被授权,可能是因为缺少有效的认证令牌(如JWT)或其他认证信息。
当用户尝试访问需要认证的资源,但客户端未能提供有效的认证令牌时,服务器会返回401状态码。
以下是一个使用Axios和React Hooks处理401响应的示例:
import React, { useEffect } from 'react';
import axios from 'axios';
import { useHistory } from 'react-router-dom';
const api = axios.create({
baseURL: 'https://api.example.com',
});
// 添加响应拦截器
api.interceptors.response.use(
response => response,
error => {
const originalRequest = error.config;
if (error.response.status === 401 && !originalRequest._retry) {
// 如果是401错误且未重试过,则重定向到登录页面
window.location.href = '/login';
}
return Promise.reject(error);
}
);
const MyComponent = () => {
const history = useHistory();
useEffect(() => {
const fetchData = async () => {
try {
const response = await api.get('/protected-resource');
console.log(response.data);
} catch (error) {
if (error.response.status === 401) {
history.push('/login');
}
}
};
fetchData();
}, [history]);
return (
<div>
{/* 组件内容 */}
</div>
);
};
export default MyComponent;
通过上述方法,你可以在React应用中有效地处理401未授权响应,提升应用的安全性和用户体验。
领取专属 10元无门槛券
手把手带您无忧上云