22

我有 3 个主题相同的域。如果有人选择不同的主题,我希望它在所有 3 个领域中传播,这样他们的体验就保持不变。

我打算通过在 domain1 上设置 cookie 来完成此操作,重定向到设置 cookie 的 domain2,重定向到设置 cookie 的 domain3,重定向回来。由于信息不需要安全或受保护,因此可以正常工作而不会出现真正的问题。

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

4

2 回答 2

46

做谷歌正在做的事情。是的,Google 正在使用相同的技巧将用户登录到不同域上的 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 时,文档才会加载。加载回调:

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

设置cookie.php

我们使用这样的 PHP 文件在其他域上设置 cookie:

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

现在在三个域上设置了 cookie。

来源 - 我的博客

于 2013-10-23T15:59:52.737 回答
0

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

于 2013-10-23T03:23:16.263 回答