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

Posted

技术标签:

【中文标题】Safari 5.1 基本身份验证注销问题【英文标题】:Safari 5.1 Basic Authentication log out issue 【发布时间】:2013-12-30 23:27:45 【问题描述】:

我在我的站点中启用了基本身份验证。我可以在 IE、Mozilla 和 Chrome 中清除用户凭据,但无法从 Safari 中清除凭据。

我尝试了以下

    调用Ajax请求并将状态码设置为401

    使用 URL 中传递的用户名调用 Ajax 请求:http://invalidUSer@site.com

但是它们都不能正常工作。每当我关闭并打开一个新的 Safari 凭据时,都不会被删除。

下面是sn-p的代码:

在注销页面我有以下脚本:

$.ajax(
    type: "POST",
    contentType: "application/javascript",
    async: true,
    url: "../ClearAuthentication.aspx"
);

在 ClearAuthentication.aspx.vb 中

'Context.Response.Redirect("http://www.test.com", False) ' have tried this both adding and removing
Response.StatusCode = 401
Page.Response.StatusDescription = "Unauthorized"
'Page.Response.AppendHeader("WWW-Authenticate", "Basic realm=""foo""") ' have tried this both adding and removing
Context.Response.End()

【问题讨论】:

【参考方案1】:

我们有同样的问题。我们成功完成了以下 hack。这就像一个简单的登录请求,但带有错误的凭据。

function logout() 
    var request = new XMLHttpRequest();                                        
    request.open("get", "/rest/login", false, user.login, "false");                                                                                                                               
    request.send();                                                            
    window.location.replace("/");

这个解决方案是the question.的最后一个答案

【讨论】:

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

Cookie 与基本身份验证

Javascript 清理缓存以清除基本身份验证凭据

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

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

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

注销 Web 表单身份验证不会删除服务器上的身份验证