HTTP 状态码 401 和 403 有什么区别?
HTTP 401 和 403 是两个常见的状态码,分别用于表示 unauthorized 和 forbidden 错误。了解它们的区别对解决前端问题很重要。
401 Unauthorized 和 403 Forbidden 都是HTTP协议中的4xx类别(客户端错误),但核心含义不同。 具体如下:
HTTP 401 Unauthorized
- 定义: 表示请求资源需要进行身份验证。 客户端未提供或提供了无效的认证凭证(如Token、用户名密码), 服务器无法识别用户身份。
- 场景举例:
- 用户未登录即尝试访问要求登入的功能。
- 认证令牌失效。
- 响应头: 服务器通常在响应头中加入
WWW-Authenticate
提示认证要求。
HTTP 403 Forbidden
- 定义: 表示客户端已被服务器认证为有效用户, 但不具备访问请求资源的权限。
- 场景举例:
- 普通用户尝试访问管理员专属资源。
- 用户已被禁止IP访问。
- 常见原因: 权限不足、服务器安全策略(如角色限制或黑名单)。
主要区别总结:
- 焦点不同: 401错误涉及认证(Authentication),表示用户身份未通过验证;403错误涉及授权(Authorization),表示用户身份已确认但无权访问。
- 状态流程不同:
- 401响应后可重试凭认证码(如登录提交)。
- 403响应意味着无权(无需提供认证),需后台授予权限。
- 例如: 访问保护资源:
- 首次未登录返回401;
- 登录后若无权限返回403。