Html 通过XMLHTTPRequest对象注销在Opera中不起作用
我在IIS中使用我的网站的基本身份验证机制。要注销用户,我正在使用类似于此JavaScript函数的功能: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
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