Firefox 4中的基本身份验证未注销

时间:2011-06-18 02:00:31

标签: javascript login basic-authentication

我正在使用基本身份验证,并希望通过javascript调用注销(清除信用证)。我编写了以下函数,该函数在IE和Firefox 3.6中工作,但现在在Firefox 4.0中不起作用。有没有解决方法

function Logout()
{
try{

  var agt=navigator.userAgent.toLowerCase();
  if (agt.indexOf("msie") != -1) {
    // IE clear HTTP Authentication
    document.execCommand("ClearAuthenticationCache");
  } 
  else {
    var xmlhttp = createXMLObject();
    xmlhttp.open("GET",".force_logout_offer_login_mozilla",true,"logout","");
    xmlhttp.send("");
    xmlhttp.abort();
  }
//  window.location = "/rest/";
} catch(e) {
}
}

function createXMLObject() {
    try {
        if (window.XMLHttpRequest) {
            xmlhttp = new XMLHttpRequest();
        }
        // code for IE
        else if (window.ActiveXObject) {
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    } catch (e) {
        xmlhttp=false
    }
    return xmlhttp;
}

1 个答案:

答案 0 :(得分:0)

解决方法可能是显示一个警告窗口来暂停脚本。

  // Let's send the request to the server
  xmlhttp.send("");
  // Let's abort the request
  var index = agt.indexOf("firefox");
  if(index > 0)
  {
    var version = agt.substr(index, agt.length-index).split("/");
    var vnum =  parseInt(version[1]);
    // alert window for Firefox > 4
    if(vnum > 4) alert("Firefox logout");
  }
  xmlhttp.abort();

如果您收到以下错误:

Fehler: uncaught exception: [Exception... "prompt aborted by user"  nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: resource://gre/components/nsPrompter.js :: openTabPrompt :: line 468"  data: no]

您必须输入about:config并设置 prompts.tab_modal.enabledfalse