让我引用www.w3.org上的HTTP 1.1 RFC specification。
10.4.2 401 未经授权
该请求需要用户身份验证。响应必须包括一个 包含挑战的WWW- 验证标题字段(第14.47节) 适用于所请求的资源。客户可以重复 请求使用合适的授权标题字段(第14.8节)。
14.8 授权
希望对服务器进行身份验证的用户代理通常(但不一定)收到401后 响应通过包含授权请求标头字段来实现 随着请求。 授权字段值包含 包含用户身份验证信息的凭据 代理请求的资源领域。
为什么凭据旨在证明用户身份(身份验证)在授权标头中传递?
答案 0 :(得分:2)
一种可能性是,它是从用户的角度而不是从服务器的角度谈论授权。
实际上有两个授权正在进行:
如果我们假设标头以1)命名,那么我们有:
用户 授权 客户端代表他们行事。该授权位于Authorization
标头中。然后,服务器使用用户对客户端的授权来对用户进行认证(确认客户端代表用户)。现在,它知道用户是谁,然后将对2)做自己的单独检查,以查看用户是否有权执行该请求。
答案 1 :(得分:1)
你可以这样看。服务器告诉客户端"请在访问此资源之前进行身份验证"并发送有关客户端应如何进行身份验证的信息(WWW-Authenticate
)。客户端负责验证,然后将该验证的证据发送到服务器(Authorization
)。
Basic
身份验证方案会让事情变得混乱,因为授权是用户名和密码,也就是说,您通过对服务器本身进行身份验证来授权(显示您知道用户和密码)。
然而,其他方案允许客户端与第三方进行身份验证,并仅向服务器发送身份验证证明。服务器可以验证授权,可能不知道客户端是谁(尽管通常是这样)。
注意这只是一种合理化。我并不是说这是所选名字背后的动机。