XMLHttpRequest和唯一会话ID PHP

时间:2011-09-19 17:14:41

标签: php ajax session xmlhttprequest sessionid

我创建了一个javascript来跟踪用户跨PHP的会话跨域,并知道用户是否在线,在javascript中我使用XMLHttpRequest并通过POST方法发送,通过函数setInterval来重复此跟踪,它适用于我,但对于XMLHttpRequest中的每个调用,PHP会话生成其他会话ID,我想在线用户只需要唯一的会话ID。

PHP:header('Access-Control-Allow-Origin: *'); //allow cross-domain request

Javascript:

var __url__rastreamento = "http://external-domain.com/rastreamento/"
var __rastreamento_tempo = 10000;
var __pagina__titulo = document.title;
var __url__requisicao = document.location.href.replace(window.location.protocol + "//" + window.location.host,"");
var __url__host = window.location.host; 

var __x__h__r;
if (window.XMLHttpRequest)
{//IE7+, Firefox, Chrome, Opera, Safari
    __x__h__r = new XMLHttpRequest();
}
else
{//IE6, IE5
    __x__h__r = new ActiveXObject("Microsoft.XMLHTTP");
}

function recarregaRastreamento(){
    __x__h__r.open("POST",__url__rastreamento ,true);
    __x__h__r.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    __x__h__r.send("titulo=" + escape(__pagina__titulo) + "&host=" +escape(__url__host) + "&requisicao=" + escape(__url__requisicao));
}

setInterval("recarregaRastreamento()", __rastreamento_tempo);

提前致谢

1 个答案:

答案 0 :(得分:0)

XMLHttpRequests之前,XMLHttpRequest Level 2不允许跨源请求。如果支持后者,则需要设置withCredentials attribute以允许为跨源请求发送凭据。