经过大量的谷歌搜索和Stackoverflowing,我仍然不清楚,因为许多文章和问题/答案太笼统(包括403 Forbidden vs 401 Unauthorized HTTP responses,这不是我的用例) .
问题:当用户未登录并请求查看仅应向登录用户显示的某些页面时,正确的HTTP状态代码是什么?
经过大量的谷歌搜索和Stackoverflowing,我仍然不清楚,因为许多文章和问题/答案太笼统(包括403 Forbidden vs 401 Unauthorized HTTP responses,这不是我的用例) .
问题:当用户未登录并请求查看仅应向登录用户显示的某些页面时,正确的HTTP状态代码是什么?
3 回答
我找到的确切令人满意的一次性答案是:
简短回答:
401未经授权
描述:
虽然我们首先知道的是 authentication (有没有用户 logged-in ?)然后我们将进入 authorization (他有没有所需的 privilege ?),但这里的关键是让我们弄错了:
来自HTTP Status Codes 401 Unauthorized and 403 Forbidden for Authentication and Authorization (and OAuth) .
所以,也许,如果我们想重写标准!关注每个单词,我们可以参考下表:
这取决于您用于执行登录的机制 .
403 Forbidden的规格说:
虽然401 Unauthorized未在主HTTP状态代码规范中定义,但在the HTTP Authentication spec中并且说:
因此,如果您使用
WWW-Authenticate
和Authorization
标头作为您的身份验证机制,请使用401.如果您使用任何其他方法,请使用403 .IMO它将取决于您尝试查询的资源类型 . 听起来更合乎逻辑 . Forbidden更多地指网站的文件或文件夹,或一般资源,而如果需要某种类型的执行,页面脚本等,Unauthorized更合乎逻辑 .