是否有使用HTTP标头进行登录成功/失败响应的标准?
答案 0 :(得分:6)
服务器发送的标头是成功或失败时的200 OK或401拒绝状态代码。
参见http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 部分 10.4.2 401未经授权。
发送401时,服务器必须发送
表示应该使用哪种方案进行身份验证。
参见http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html 部分 14.47 WWW-Authenticate 。
答案 1 :(得分:1)
只有HTTP/1.0 401 Unauthorized
。
但最近我开发了这个“身份验证模式”:首次访问该页面时,您会获得401
和登录屏幕。输入正确的登录数据后,您会收到200
。当您的会话过期或单击注销时,您会再次收到401
和登录屏幕。登录屏幕始终为401
,每隔一页200
。
答案 2 :(得分:1)
这取决于“登录”的含义,也可能取决于服务器如何处理登录/注销/授权。
通常,“登录”表达式与会话相关。一个'登录',做什么需要做,然后'退出'。服务器或者存储会话信息并将会话ID发送到客户端,客户端然后将cookie发回以通知服务器会话正在进行。在会话中,变量可以改变,并且它们的状态在来自客户端的调用之间是持久的。
直观地说,当你开始一个会话时应该有一种'授权'的响应,以及响应'未授权(401)',这听起来很自然。
但是,HTTP是一种无状态协议。它不知道状态,只知道请求是否被授权。这就是为什么存在状态401但没有特定的“授权”状态代码(因为如果请求未经授权则被隐式授权)。
为了能够在HTTP级别上处理会话(不使用像PHP的session_start()那样的构造),必须在每次请求时发送授权凭证。例如,当使用.htaccess文件保护文件夹时会发生这种情况。在向密码对话框提供用户名和密码之后,每次在授权领域内存在访问时,都会发送这些用户名和密码。有一种“会话”的错觉,但实际上每次请求都会发送用户名和密码。
答案 3 :(得分:0)
对于密码等错误凭据,您发送“401”状态代码,而对于正确凭据,您在响应中发送“200”状态代码