【问题标题】:Logout through XMLHTTPRequest Object is not working in Opera通过 XMLHTTPRequest 对象注销在 Opera 中不起作用
【发布时间】:2012-09-13 17:14:03
【问题描述】:

我在 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 中不运行。

请在这方面帮助我。

【问题讨论】:

    标签: html ajax xmlhttprequest


    【解决方案1】:

    XMLHttpRequest 中设置无效凭据会导致丢弃有效凭据,这不是您可以依赖的。它恰好可以在许多浏览器中使用,但它根本没有标准化。 Opera 忽略凭据并没有做错任何事情。

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

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

    【讨论】:

      【解决方案2】:

      使用任何好的 JavaScript 库。例如.jQuery... 所以你不会有任何浏览器特定的问题。

      【讨论】:

        【解决方案3】:

        最好对破坏会话数据的页面进行ajax调用;像 logout.asp 这样的页面,在 php 语言中调用了 Session.Abandon()session_destroy()

        注销.php:

        <?php session_destroy();?>

        logout.aspx 或 logout.asp:

        //other functions can go here before ending the session

        <% Session.Abandon() %>

        然后是javascript函数:

        function(){
           $.ajax({
              url:'logout.php',//or logout.aspx or logout.asp
              success:function(){location.reload();}, 
           });
        }
        

        您应该在发出此注销调用的页面上加载jquery.js

        【讨论】:

          猜你喜欢
          • 2018-03-23
          • 2013-08-04
          • 1970-01-01
          • 1970-01-01
          • 2022-10-19
          • 2011-12-02
          • 2017-04-19
          • 2016-03-29
          • 1970-01-01
          相关资源
          最近更新 更多