对于存在的网页,但对于没有足够权限的用户(他们没有登录或不属于正确的用户组),什么是正确的HTTP响应服务?401?403?还有别的吗?目前为止我读过的每一篇文章都不太清楚两者之间的区别。哪些用例适用于每个响应?
发布于 2018-06-12 15:53:50
明确解释:
401 Unauthorized存在一个问题,即认证错误的HTTP状态码。这就是它:它用于身份验证,而不是授权。接收到401响应的是服务器告诉你,“你没有通过身份验证 - 根本没有进行身份验证或验证不正确 - 但请重新进行身份验证并再试一次。”为了帮助你解决问题,它始终包含一个WWW-Authenticate标头,该标头描述了如何认证。 这是你的Web服务器通常返回的响应,而不是你的Web应用程序。 这也是非常短暂的事情; 服务器要求你再试一次。 所以,为了授权,我使用403 Forbidden响应。它是永久的,它与我的应用程序逻辑相关联,而且比401更具体。 收到403响应是服务器告诉你,“我很抱歉。我知道你是谁 - 我相信你说你是谁 - 但你只是没有权限访问此资源。也许如果你很好地问系统管理员,你会得到许可。但请不要再困扰我,直到你的困境发生变化。“ 总之,应该使用401未经授权的响应来验证缺失或错误,并且之后应该使用403禁止响应,当用户通过身份验证但未被授权对给定资源执行请求的操作时。
发布于 2018-06-12 17:08:22
必须了解的是,RFC 2616中的认证和授权仅指RFC 2617的HTTP认证协议.HTTP状态代码不支持RFC2617以外的方案进行认证,并且不考虑当决定是否使用401或403
简而言之,Terse
未经授权表示客户端未经RFC2617认证且服务器正在启动认证过程。Forbidden指示客户端经过RFC2617认证且没有授权,或者服务器不支持所请求资源的RFC2617。
这意味着如果你拥有自己的自己的登录过程并且从不使用HTTP身份验证,则403始终是正确的响应,并且不应使用401。
https://stackoverflow.com/questions/-100008657
复制相似问题