Chrome中的HTTP基本身份验证注销问题

6
我正在使用以下方法从使用基本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中的身份验证缓存。请参见https://dev59.com/bm855IYBdhLWcg3wvnOE#30308402获取更多详细信息。 - RaviU
1个回答

1

基本身份验证并不适用于管理登出。

如果您想要能够注销用户,可以在服务器上创建一个端点,返回HTTP 403(禁止)状态码。这将触发浏览器“注销”/清除基本身份验证缓存。

User clicks logout button --> 
Ajax call to /logout which will return HTTP 403 --> 
Browser basic authentication cache will be cleared

@JavaUser 这有帮助吗? - jeanfrg
在我的情况下,从服务器返回401而不是403有效。 - Alma Alma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接