使用PHP或JavaScript在多个域上设置cookie

使用PHP或JavaScript在多个域上设置cookie,javascript,php,cookies,setcookie,Javascript,Php,Cookies,Setcookie,我有3个主题相同的域名。如果有人选择了一个不同的主题,我希望它能在所有3个领域传播,这样他们的体验就不会改变 我计划在域1上设置cookie,重定向到设置cookie的域2,重定向到设置cookie的域3,再重定向回。由于信息不需要安全或受保护,因此可以正常工作,不会出现任何实际问题 我讨厌3重定向只是为了在每个域上设置一个cookie,并且正在寻找更优雅的东西。您可以在iFrame中包括其他两个域。有关更多信息,请搜索“第三方cookie”。但是,根据浏览器设置,用户可能不接受第三方cooki

我有3个主题相同的域名。如果有人选择了一个不同的主题,我希望它能在所有3个领域传播,这样他们的体验就不会改变

我计划在域1上设置cookie,重定向到设置cookie的域2,重定向到设置cookie的域3,再重定向回。由于信息不需要安全或受保护,因此可以正常工作,不会出现任何实际问题


我讨厌3重定向只是为了在每个域上设置一个cookie,并且正在寻找更优雅的东西。

您可以在iFrame中包括其他两个域。有关更多信息,请搜索“第三方cookie”。但是,根据浏览器设置,用户可能不接受第三方cookie。这里还有其他一些想法:

做谷歌正在做的事情。是的,谷歌也在用同样的方法让用户登录YouTube和其他谷歌服务,这些服务位于不同的域名上

创建一个PHP文件,在所有3个域上设置cookie。然后在要设置主题的域上,创建一个HTML文件,该文件将加载PHP文件,该文件将在其他两个域上设置cookie。例如:

<html>
   <head></head>
   <body>
      <p>Please wait.....</p>
      <img src="http://domain2.com/setcookie.php?theme=whateveryourthemehere" />
      <img src="http://domain3.com/setcookie.php?theme=whateveryourthemehere" />
   </body>
</html>

请稍等

然后在body标记上添加一个onload回调。仅当图像完全加载时,即在其他2个域上设置cookie时,才会加载文档。Onload回调:

<head>
   <script>
   function loadComplete(){
      window.location="http://domain1.com";//URL of domain1
   }
   </script>
</head>
<body onload="loadComplete()">

函数loadComplete(){
window.location=”http://domain1.com“;//域1的URL
}
setcookie.php 我们使用如下PHP文件在其他域上设置cookie:

<?php
if(isset($_GET['theme'])){
   setcookie("theme", $_GET['theme'], time()+3600);
}
?>

现在Cookie设置在三个域上


我喜欢这样,它更优雅,而且由于没有额外的重定向,在所有站点上设置cookie的总时间大大减少。谢谢