【问题标题】:Set cookie on multiple domains with PHP or JavaScript使用 PHP 或 JavaScript 在多个域上设置 cookie
【发布时间】:2013-11-01 02:37:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript php cookies setcookie


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      做 Google 正在做的事情。是的,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()">
      

      setcookie.php

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

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

      现在 cookie 设置在 三个 域上。

      Source - My Blog

      【讨论】:

      • 我喜欢这个,它更优雅,并且由于没有额外的重定向,在所有站点上设置 cookie 的总时间显着减少。谢谢
      猜你喜欢
      • 2013-11-19
      • 2010-09-28
      • 2012-12-18
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多