错误403的HTTP规范中的“授权无效”是什么意思?

时间:2013-12-20 00:05:34

标签: http authentication standards http-status-code-403 http-status-code-401

HTTP 1.1 spec说:

  

10.4.4 403禁止

     

服务器理解请求,但拒绝履行请求   授权无效,请求不应重复。 [...]

这是否仅表示“基本授权”,如WWW-Authenticate: Basic中所述?是否应该为资源发布403,其他用户可能通过基本HTTP身份验证以外的方式访问被拒绝的资源(例如通过他的会话cookie,OpenID等)?

我问这个,因为HTTP 401说...

  

响应必须包含WWW-Authenticate header字段

...而且我不确定我是否应该添加像WWW-Authenticate: Custom这样的标题。

许多人似乎都使用403,即使在简单的cookie可以使资源可用的情况下也是如此。他们都错了吗?

1 个答案:

答案 0 :(得分:3)

我相信你是对的,当请求被拒绝时应该使用403,无论授权如何。 一个示例用法是阻止目录浏览,如下所述:

http://www.checkupdown.com/status/E403.html

当然,人们可能会错误地使用它而不应该使用401。

401和403之间的差异也在this other SO question中讨论, 一致认为 401用于身份验证错误, 403用于授权错误

身份验证与授权的问题可能会有些混乱,特别是在the spec说:

  

10.4.2 401未经授权

     

请求需要用户身份验证。

我认为关键的区别是:

  • 401 表示您未获得授权,因为您没有正确的身份验证
  • 403 表示您未经授权,无论身份验证