这是我的问题:我有一个网站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。
答案 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 />
标签
例如: 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设置的。我究竟想要的!