Chrome的HTTP BASIC身份验证注销问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Chrome的HTTP BASIC身份验证注销问题相关的知识,希望对你有一定的参考价值。

我使用以下方法从使用基本HTTP身份验证的HTTP服务器注销。这适用于IE和FireFox。但是对于Chrome,我甚至可以使用错误的用户名和密码来获取html文件。

在Chrome中,流程是,我收到“**********失败***********”错误,然后显示请求的页面(some_server_file.html)。

但是在IE / Chrome中,流程是,我得到“**********失败***********”错误,然后登录对话框提示输入凭证。

无论如何,即使第一次请求失败并且凭据错误,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;
}

谢谢

答案

基本身份验证不是为了管理注销而设计的。

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

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

以上是关于Chrome的HTTP BASIC身份验证注销问题的主要内容,如果未能解决你的问题,请参考以下文章

路由器如何注销 HTTP Basic/Digest Auth?

Safari 5.1 基本身份验证注销问题

使用 HTTP-Basic 身份验证发出 HTTP GET 请求

Devise 的 HTTP 身份验证中断了常规注销

使用 http 基本身份验证和 restful_authentication 插件注销

php 带有注销功能的HTTP身份验证示例