Safari浏览器注销问题Windows身份验证

时间:2012-06-14 13:33:58

标签: javascript asp.net safari

在注销页面之后,如果用户没有关闭浏览器窗口并再次返回站点,则不会显示任何身份验证框,因为用户名和密码存储在浏览器缓存中。

在IE中,document.execCommand(“ClearAuthenticationCache”)工作正常。但这似乎不适用于safari。

我尝试了以下选项,

1)Response.Statuscode=401(来自服务器端) - 这清除了身份验证缓存并提供了凭据弹出窗口,但即使我们提供了正确的凭据,它也不接受。如果我们点击取消并尝试再次访问该页面,那么它可以正常工作。

2)使用XMLHttpRequestfrom客户端 - 当我尝试使用空白凭证打开同一站点上的URL时,readyState和statuscode始终返回0

 function testfn() {
        alert("send completed");
        alert(XMLHttp1.readyState);
    }
    function run()
    {
        XMLHttp1 = new XMLHttpRequest();
        XMLHttp1.onreadystatechange = testfn();
        XMLHttp1.open('GET', 'http://172.22.164.253/test/testxml.xml', true, '_', '_');
        try {
            XMLHttp1.wi
            XMLHttp1.send();
            alert("sent");
            alert("status" + XMLHttp1.status);
            alert(XMLHttp1.status == 401) ;
            } 
        catch (ex) {
            alert("Exception: Got an exception. " + ex);
        }
    }

3)清除缓存 - 用各种组合尝试以下所有代码,但没有运气

Response.ExpiresAbsolute=DateTime.Now.AddDays(-1d);
Response.Expires =-1500;
Response.CacheControl = "no-cache";

Response.Redirect("Login.aspx");
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache);
Page.Response.Cache.SetNoStore();

请告诉我在使用Windows身份验证的ASP.NET页面上从Safari注销的解决方案。

0 个答案:

没有答案