通过 PHP 注销 HTTP 身份验证
2022-08-30 06:44:20
注销受 HTTP 身份验证保护的文件夹的正确方法是什么?
有一些解决方法可以实现这一点,但它们具有潜在的危险性,因为它们可能存在错误或在某些情况下/浏览器不起作用。这就是为什么我正在寻找正确和干净的解决方案。
注销受 HTTP 身份验证保护的文件夹的正确方法是什么?
有一些解决方法可以实现这一点,但它们具有潜在的危险性,因为它们可能存在错误或在某些情况下/浏览器不起作用。这就是为什么我正在寻找正确和干净的解决方案。
木。没有正确的方法存在,甚至没有一个跨浏览器一致的方法。
这是一个来自HTTP规范(第15.6节)的问题:
现有的 HTTP 客户端和用户代理通常会无限期地保留身份验证信息。HTTP/1.1.不提供服务器指示客户端丢弃这些缓存凭据的方法。
另一方面,第10.4.2节说:
如果请求已包含授权凭据,则 401 响应指示已拒绝对这些凭据的授权。如果 401 响应包含与先前响应相同的质询,并且用户代理已至少尝试身份验证一次,则应向用户显示响应中给出的实体,因为该实体可能包含相关的诊断信息。
换句话说,您可以再次显示登录框(如@Karsten所说),但浏览器不必满足您的请求 - 因此不要过分依赖此(错误)功能。
在Safari中运行良好的方法。也适用于Firefox和Opera,但有警告。
Location: http://logout@yourserver.example.com/
这告诉浏览器使用新用户名打开URL,覆盖以前的用户名。