【问题标题】:Cross Server Cookies, PHP跨服务器 Cookie,PHP
【发布时间】:2011-01-17 19:31:44
【问题描述】:

我们有 2 台网络服务器,一台安全,一台正常。

可以这样设置cookie吗

setcookie("basket[id]", $newID, time()+60*60*24, "/", SITE_URL, 0, true);  
setcookie("basket[id]", $newID, time()+60*60*24, "/", SECURE_SITE_URL, 1, false);

在哪里

SITE_URL = www.sitename.com  
SECURE_SITE_URL = xxxxx.securesitename.com

凯尔

【问题讨论】:

    标签: php cookies session-cookies


    【解决方案1】:

    设置 Cookie

    使用setcookie,您可以设置域参数以指示cookie 可用的位置。要使 cookie 在 example.com 的所有子域上可用,您需要将其设置为“.example.com”。这 。不是必需的,但可以兼容更多浏览器。

    只要您的服务器被不同的子域引用,您就可以相应地设置您的 cookie。

    安全参数

    安全,表示 cookie 只能通过来自客户端的安全 HTTPS 连接传输。

    在不同的域上设置 Cookie

    服务器不能为它不是其成员的域设置 cookie。

    发出 cookie 的服务器必须是它​​尝试在 cookie 中设置的域的成员。也就是说,名为 www.myserver.com 的服务器无法为域 www.yourserver.com 设置 cookie。

    双击是如何做到的

    该规则的一个例外是广告代理商双击。当他们从他们的服务器加载到其他人的网站时,谁设法通过将带有图像请求的 cookie 打包到您的 PC 中而无需访问特定的网站。

    【讨论】:

    • www.sitename.com 和 secure.sitename.com 应该使用单个 cookie,但他试图做的是跨域(站点名/安全站点名)设置 cookie,而不仅仅是子域。
    • 感谢您的提示。我添加到我的答案中
    • 谢谢大家,这就是我所害怕的。
    • 您不能设置cookie跨域。但是,如果您真的想要这个,那么您可以为您的域/子域设置 cookie,并在正文中包含一个 1x1 像素或对其他域不可见的 iframe,包括一个短暂的令牌,允许另一个域在另一个域中设置相同的 cookie域(或者您可以使用 http 重定向)。如果涉及 https,两个域当然可以使用虚拟主机在同一主机上提供服务,但有 1 个小问题。您是否正在尝试跨域 SSO?
    【解决方案2】:

    您不能为当前域或其超集以外的域设置 cookie(例如 example.comfoo.example.com 的超集和 bar.example.com)。这意味着第二个 Set-Cookie 将被浏览器拒绝。

    一种解决方案是使用主域的子域作为安全域,例如 secure.example.com。然后,.example.com 的 cookie 集将在 www.example.com 以及 secure.example.com 上提供。

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 2011-12-04
      • 2015-09-21
      • 2018-11-07
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-24
      • 2010-09-09
      相关资源
      最近更新 更多