【问题标题】:HTTP BASIC Authentication logout issue with ChromeChrome 的 HTTP BASIC 身份验证注销问题
【发布时间】: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 中的身份验证缓存。有关详细信息,请参阅stackoverflow.com/a/30308402/1917897

标签: javascript jquery html google-chrome http


【解决方案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 工作
猜你喜欢
  • 2017-04-03
  • 2021-10-08
  • 1970-01-01
  • 2011-05-08
  • 2015-06-20
  • 2011-12-02
  • 2013-12-30
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多