HTTP 状态码 401 和 403 有什么区别?

HTTP 401 和 403 是两个常见的状态码,分别用于表示 unauthorized 和 forbidden 错误。了解它们的区别对解决前端问题很重要。

网络协议 中等 HTTP 状态码 网络

401 Unauthorized 和 403 Forbidden 都是HTTP协议中的4xx类别(客户端错误),但核心含义不同。 具体如下:

HTTP 401 Unauthorized

  • 定义: 表示请求资源需要进行身份验证。 客户端未提供或提供了无效的认证凭证(如Token、用户名密码), 服务器无法识别用户身份。
  • 场景举例:
    • 用户未登录即尝试访问要求登入的功能。
    • 认证令牌失效。
  • 响应头: 服务器通常在响应头中加入 WWW-Authenticate 提示认证要求。

HTTP 403 Forbidden

  • 定义: 表示客户端已被服务器认证为有效用户, 但不具备访问请求资源的权限。
  • 场景举例:
    • 普通用户尝试访问管理员专属资源。
    • 用户已被禁止IP访问。
  • 常见原因: 权限不足、服务器安全策略(如角色限制或黑名单)。

主要区别总结:

  • 焦点不同: 401错误涉及认证(Authentication),表示用户身份未通过验证;403错误涉及授权(Authorization),表示用户身份已确认但无权访问。
  • 状态流程不同:
    • 401响应后可重试凭认证码(如登录提交)。
    • 403响应意味着无权(无需提供认证),需后台授予权限。
  • 例如: 访问保护资源:
    • 首次未登录返回401;
    • 登录后若无权限返回403。