没错。我的网络目录中的 admin 文件夹中有一个 .htaccess 文件。它包含以下内容:
AuthType Basic
AuthName "Password Protected Area"
AuthUserFile /storage/ssd2/048/1839048/.htpasswd
Require valid-user
我的网络目录上方还有一个 .htpasswd 文件,因此访问者看不到它:
test:dGRkPurkuWmW2
一切正常,但我不知道这种身份验证方法如何保存密码。当我第一次访问受保护的目录时,它要求我输入用户名和密码,但现在我刷新页面时它不再要求我输入。我清除了浏览器中的 cookie 并重新启动它,但密码仍然保存。有人知道这是怎么回事吗?
答案1
清除 cookies 没有帮助,因为密码是由浏览器保存的,但它不在曲奇饼定义于HTTP状态管理机制(RFC 6265),例如会话 ID:
== 服务器 -> 用户代理 ==
Set-Cookie: SID=31d4d96e407aad42; Path=/; Secure; HttpOnly Set-Cookie: lang=en-US; Path=/; Domain=example.com
== 用户代理 -> 服务器 ==
Cookie: SID=31d4d96e407aad42; lang=en-US
这种 SID 由更复杂的身份验证机制使用,该机制仅检查一次密码,然后仅根据 cookie 的存在来信任该用户已通过身份验证。
反而,AuthType Basic
使用Authorization = credentials
来自HTTP 身份验证(RFC 7235, 4.2)。这是一种非常基本的身份验证机制,它会在每个 HTTP 请求上发送凭据,格式为:credentials = auth-scheme [ 1*SP ( token68 / #auth-param ) ]
。
浏览器不断发送,直到收到新的401 Unauthorized
HTTP 响应中的状态码:
如果请求已经过身份验证并且指定了范围,则相同的凭证将被假定对该范围之内的所有其他请求有效(假设身份验证方案本身不需要其他方式,例如根据质询值而变化的凭证或使用同步时钟)。
强制执行此操作而无需主动配置要发送的内容的一种方法401
是让用户使用其中包含其他用户名和密码的 URL,即(链接或 JS)。http://forcelog:[email protected]/
浏览器通常会在重新启动时清除基本身份验证信息。此外(非完整列表):
chrome://restart
当您使用地址栏重新启动时,Chrome 和 Chromium 会清除它。- 当您清除历史记录时,Firefox 也会清除它:活动登录。
- Internet Explorer 允许 ActiveX 控件清除它。