一下代码完全兼容IE、Firefox、Chrome浏览器,实现Authorization:Basic 密码验证的注销 logout。至于其他浏览器理论上可以但没有测试。
注销原理是像服务器发送错误验证信息,对服务器进行读写操作,使浏览器判断当前用户是非法用户,要重新登录。
最近项目要同时兼容三个浏览器:IE、firefox、chrome
登陆框密码是浏览器自动产生,在注销时发生各种问题,IE能很好的logout
firefox、chrome浏览器能记住密码,很难实现logout,网上说故意发送一个错误的密码就OK了,由于现代浏览器都很智能,第一次能logout,再次登录后就不能成功logout了
我用随机产生的用户名密码可以解决以上问题,源码如下:
-
function createXMLObject() {
-
var xmlHttp;
-
try {
-
if (window.XMLHttpRequest) {
-
xmlHttp = new XMLHttpRequest();
-
}
-
else if (window.ActiveXObject) {
-
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
-
}
-
} catch (e) {
-
xmlHttp=false
-
}
-
return xmlHttp;
-
}
-
function clearAuthenticationCache(page) {
-
if (!page) page = '/';
-
-
try {
-
var agt=navigator.userAgent.toLowerCase();
-
-
if (agt.indexOf("msie") != -1 ||agt.indexOf("trident") != -1) {
-
// IE clear HTTP Authentication
-
document.execCommand("ClearAuthenticationCache");
-
}
-
else {
-
var logout=String(Math.random()*65536 + 1);
-
var xmlhttp = createXMLObject();
-
xmlhttp.open("POST", page, false,logout,base64encode(logout));
-
xmlhttp.send(null);
-
}
-
} catch(e) {
-
warn_logout_fail();
-
window.location.href="wwwctrl.cgi?action=DEFAULT";
-
return;
-
}
-
return;
-
}
-
clearAuthenticationCache();
-
window.location.href='/';
阅读(7944) | 评论(0) | 转发(0) |