我有3个以相同为主题的域名。如果有人选择不同的主题,我希望它在所有3个域中传播,以便他们的体验保持不变。
我计划通过在domain1上设置cookie,重定向到设置了cookie的domain2,重定向到设置了cookie的domain3,重定向回来来实现此目的。由于信息不需要是安全的或受到保护的,因此无需任何实际问题即可正常工作。
我讨厌3重定向只是为了在每个域上设置一个cookie并且正在寻找更优雅的东西。
答案 0 :(得分:34)
做谷歌正在做的事情。是的,谷歌正在采用同样的方法将用户登录到YouTube和其他不同域名的Google服务。
创建 PHP 文件,在所有3个域上设置Cookie。然后在主题设置的域上,创建一个 HTML 文件,该文件将加载在其他2个域上设置cookie的 PHP 文件。例如:
<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()">
我们使用这样的PHP文件在其他域上设置cookie:
<?php
if(isset($_GET['theme'])){
setcookie("theme", $_GET['theme'], time()+3600);
}
?>
现在,Cookie已在三个域上设置。
答案 1 :(得分:0)
您可以在iFrame中包含其他两个域。有关更多信息,请搜索“第三方cookie”。但是,根据浏览器设置,用户可能不接受第三方cookie。这里还有其他一些想法:What's your favorite cross domain cookie sharing approach?