Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 通过XMLHTTPRequest对象注销在Opera中不起作用_Html_Ajax_Xmlhttprequest - Fatal编程技术网

Html 通过XMLHTTPRequest对象注销在Opera中不起作用

Html 通过XMLHTTPRequest对象注销在Opera中不起作用,html,ajax,xmlhttprequest,Html,Ajax,Xmlhttprequest,我在IIS中使用我的网站的基本身份验证机制。要注销用户,我正在使用类似于此JavaScript函数的功能: function logoutUser() { setTimeout('location.reload(true)', 1000); xmlhttp = GetXmlHttpObject(); if (xmlhttp==null) { return; } //alert(xmlhttp); var url = "index.php"; xmlhttp

我在IIS中使用我的网站的基本身份验证机制。要注销用户,我正在使用类似于此JavaScript函数的功能:

  function logoutUser() {
  setTimeout('location.reload(true)', 1000);
  xmlhttp = GetXmlHttpObject();
  if (xmlhttp==null) {
  return;
   }
  //alert(xmlhttp);
  var url = "index.php";

  xmlhttp.open("GET", url, true, "dummy_user", "dummy_password");

  xmlhttp.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
  xmlhttp.setRequestHeader( 'Accept', 'message/x-formresult' );   
  xmlhttp.send(null);
  }
  function GetXmlHttpObject()
   {
  if (window.XMLHttpRequest)
   {
   // code for IE7+, Firefox, Chrome, Opera, Safari
   return new XMLHttpRequest();
   }
   if (window.ActiveXObject)
  {
   // code for IE6, IE5
   return new ActiveXObject("Microsoft.XMLHTTP");
    }
   return null;
    }
其思想是使用一些无效凭据强制请求,以便使浏览器缓存的真实凭据无效

它在IE、Firefox、Safari、Google Chrome中运行良好,但在Opera中则不行


请在这方面帮助我。

XMLHttpRequest
中设置无效凭据会导致丢弃有效凭据,这是您无法信赖的。它在许多浏览器中都能正常工作,但它完全没有标准化。Opera没有因为忽略凭证而做错任何事情

没有导致删除HTTP基本身份验证凭据的标准方法。还有一种更广泛的方法,那就是有一个到
/logout
的链接,当用户拥有有效凭证时,而不是当用户没有凭证时,该脚本会响应
401
。这将弹出一个auth对话框,用户可以在其中填写无意义的值或空字符串;然后,当重新请求
/logout
时,它接受这些凭据,替换旧的“真实”凭据


将此方法与
XMLHttpRequest
配对是目前为HTTP身份验证提供注销功能所能做的最好的方法。

使用任何好的JavaScript库。例如jQuery。。。
因此,您不会遇到任何特定于浏览器的问题。

最好对破坏会话数据的页面进行ajax调用;一个类似logout.asp的页面,在php语言中调用了
Session.about()
Session\u destroy()

logout.php:

logout.aspx或logout.asp:

//在结束会话之前,其他函数可以转到此处

然后使用javascript函数:

function(){
   $.ajax({
      url:'logout.php',//or logout.aspx or logout.asp
      success:function(){location.reload();}, 
   });
}
您应该在进行此注销调用的页面上加载
jquery.js