10.4.4 403禁止
服务器理解请求,但拒绝履行请求 授权无效,请求不应重复。 [...]
这是否仅表示“基本授权”,如WWW-Authenticate: Basic
中所述?是否应该为资源发布403,其他用户可能通过基本HTTP身份验证以外的方式访问被拒绝的资源(例如通过他的会话cookie,OpenID等)?
我问这个,因为HTTP 401说...
响应必须包含
WWW-Authenticate header
字段
...而且我不确定我是否应该添加像WWW-Authenticate: Custom
这样的标题。
许多人似乎都使用403,即使在简单的cookie可以使资源可用的情况下也是如此。他们都错了吗?
答案 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未经授权
请求需要用户身份验证。
我认为关键的区别是: