通过在其他网站上发出的ajax请求设置会话/ Cookie

时间:2011-01-31 12:20:41

标签: php ajax session cookies

这是我的问题:我有一个网站example.com,其中index.html文件引入了<script src="website.net/js.js"></script>你可以看到,这是在其他网络服务器上。 在js.js我有一些我想发送给php的数据。为此,我正在使用Ajax。所以,我使用方法get向"website.net/data.php"发出了请求。在data.php文件中一切正常,我收到了值,但我想设置一个cookie,其值是我通过ajax收到的。这是问题所在。 setcookie函数表示cookie已设置,但是当我在浏览器中检查时,没有cookie!

如果我使用<script src="website.net/js.js"></script>的index.html文件托管在我发出请求的同一域中,它可以正常工作。如果它在另一个域上,则它不再起作用。

我已经阅读了有关Ajax跨站点的内容,但我不想将某些内容发送回example.com。我想要的是将一些数据从example.com发送到website.net,然后根据该值设置一个cookie。

我从example.net获取单个值。在website.net上我收到了这个值,我检查它是否已经是cookie集,如果不是,我设置它。在同一个网站website.net上,我也使用了这个cookie。

3 个答案:

答案 0 :(得分:5)

您在哪里检查cookie是否已设置?在域example.com或域website.net上?

如果您尝试使用example.com访问cookie,则无法使用其他域的cookie编写/访问或执行任何操作。这是出于安全原因。如果可以的话,每个其他网站都可以访问您的cookie并轻松窃取您的身份。

答案 1 :(得分:0)

尝试在iframe中设置Cookie。我不确定你是否可以使用JavaScript为website.net设置cookie,因为js.js是从该域加载的。

答案 2 :(得分:0)

非常感谢! 我找到了另一种方法,使用基本的javascript和<img />标签

将数据发送到没有ajax的php文件

例如: example.com有索引:

<script type="text/javscript" src="http://website.net/js.js"></script>

在js.js文件中我有

var important_data = 123; // 

var src = "http://website.net/process.php?important_data=" + important_data;
document.write('<img src="' + src + '"/> ');

现在,每次加载example.com时,它都会向website.net发送重要数据。我试图在process.php文件中设置一个cookie,但它确实有效!我在localhost上测试了这个想法(两个'网站'都在我的本地服务器中),但它也应该在两个不同的域之间工作。我会试着看看它是否适用于2个不同的网站。在那之后,我会回来分享结果。

谢谢!

后来编辑: 我检查了是否可以使用该方法设置cookie,并且它有效! 它很棒!没有为该域设置website.net的cookie,它是为example.com设置的。我究竟想要的!