0

背景:

我正在使用 javascript 开发网站跟踪器。以下是它的工作原理:

1) 用户访问跟踪脚本在“anydomain.com”上的任何域。该脚本在后台对我的主域“masterdomain.com”进行了成功的 ajax 调用。

2) 当“masterdomain.com”收到请求时,运行以下伪代码。它通过检查现有会话来工作,如果一个不存在,它会创建一个新会话。

第一次调用似乎很好,因为我能够在响应中收到会话 ID。但是,对“masterdomain.com”的每次连续调用都会创建一个新会话。AKA 服务器找不到“应该是”现有会话。

示例伪代码:

if(session exists)
{
// update timestamp for session
}
else
{
// set a new session for visitor
}

// load template
api(array("accepted"=>session_id),callback);

一些速览:

1)这似乎不是同源问题(因为我能够与服务器正常通信)。

2)我已经尝试过使用 cookie/会话,但似乎都不起作用。

3)我正在使用codeigniter(会话设置为不会在页面关闭时过期)。我也尝试过使用/不使用数据库会话)。

如果每次在服务器上加载页面(不使用 IP)时,如果有另一种方法来唯一标识用户,也可以解决此问题。

任何帮助都将不胜感激,因为我正准备把剩下的头发从头上扯下来!!!!:(

4

2 回答 2

0

这个答案是不完整的,因为你必须做一些额外的研究,但最简单的方法(实际上并不是特别“容易”)是使用 Javascript 将隐藏的 iframe 放置到 masterdomain.com,并设置iframe 通信(例如使用 postMessage)从该 iframe 检索会话到您的页面。

于 2013-08-08T20:54:56.560 回答
0

如果您调用的 URL 与调用脚本位于同一域中,则使用 AJAX 调用您只能发送/设置会话 cookie。我认为您应该创建一个 iframe,从内部调用 ajax,它应该可以正常工作。顺便说一句,我不知道您要跟踪什么。

于 2017-10-05T08:21:55.167 回答