在注销页面之后,如果用户没有关闭浏览器窗口并再次返回站点,则不会显示任何身份验证框,因为用户名和密码存储在浏览器缓存中。
在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注销的解决方案。