Chrome 的 HTTP BASIC 身份验证注销问题
Posted
技术标签:
【中文标题】Chrome 的 HTTP BASIC 身份验证注销问题【英文标题】:HTTP BASIC Authentication logout issue with Chrome 【发布时间】:2016-05-14 10:34:21 【问题描述】:我正在使用以下方法从使用基本 HTTP 身份验证的 HTTP 服务器注销。 这适用于 IE 和 FireFox 。但在 Chrome 的情况下,即使用户名和密码错误,我也能获取 html 文件。
在 Chrome 中,流程是,我收到“********** Failed ***********”错误,然后显示请求的页面(some_server_file.html)。
但在 IE/Chrome 中,流程是,我收到“********** Failed ***********”错误,然后登录对话框提示输入凭据。
不知何故,即使在第一次请求因错误的凭据而失败后,Chrome 也会发送正确的用户名和密码。
谁能解决 Chrome 问题?
function logout()
jQuery.ajax(
type: "get",
url: "some_server_file.html",
async: false,
username: "wronguser",
password: "wrongpass",
headers: "Authorization": "Basic xxx"
)
.success(function ()
console.log("********** Success ***********");
)
.fail(function ()
console.log("********** Failed ***********");
);
return false;
谢谢
【问题讨论】:
我认为这可能会对您有所帮助。它显然可以在 Chrome 54 中运行,也可能在更高版本上运行。本质上,您发送不正确的凭据以清除 chrome 中的身份验证缓存。有关详细信息,请参阅***.com/a/30308402/1917897。 【参考方案1】:基本身份验证并非旨在管理注销。
如果您希望能够注销用户,您可以在您的服务器上创建一个端点,返回 HTTP 403
(禁止)状态代码。这将触发浏览器“注销”/清除基本身份验证缓存。
User clicks logout button -->
Ajax call to /logout which will return HTTP 403 -->
Browser basic authentication cache will be cleared
【讨论】:
@JavaUser 有帮助吗? 在我的情况下,从服务器返回 401 而不是 403 工作以上是关于Chrome 的 HTTP BASIC 身份验证注销问题的主要内容,如果未能解决你的问题,请参考以下文章
使用 HTTP-Basic 身份验证发出 HTTP GET 请求
默认发送 BASIC auth,而不是等待 HTTP 401