为两个域设置 Cookie


Setting a cookie for two domains

我正在尝试为同一站点设置两个cookie。(除了一个是HTTP,一个是HTTPS站点。

 $cookie_domain_http = parse_url(HTTP_SERVER);
 $cookie_domain_https = parse_url(HTTPS_SERVER);

假设HTTP_SERVER包含 http://www.somesite.com,HTTPS_SERVER包含 https://ssl1.otherdomain.com,我将使用以下方法。

   setcookie("referrer_key",
     $_GET['referrer'],
     time() + 60*60*24*365,
     $cookie_domain_http['path'], 
     $cookie_domain_http['host']); // Set the cookie for the non-HTTPS version.
if(ENABLE_SSL == "true") {
   setcookie("referrer_key",
     $_GET['referrer'], 
     time() + 60*60*24*365, 
     $cookie_domain_https['path'], 
     $cookie_domain_https['host']); // Set the cookie for HTTPs version.
}

现在,第一个setcookie是正确设置会话cookie。但是,第二行不会导致它显示。

我如何使用这段代码,特别是PHP来做到这一点。

您只能在一个域中设置 cookie,即运行代码的域。您可以获得的最接近的是设置为 somesite.com,在这种情况下,它将被发送到 somesite.com 的所有子域

您不能在同一段代码中同时对 somesite.com 和 othersite.com 设置 Cookie。

否则,没有什么可以阻止您为任意域添加 cookie。

http://php.net/manual/en/function.setcookie.php

最后还有一个参数,可用于指定 cookie 是否安全。

if (ENABLE_SSL == "true") 
  setcookie("referrer_key", 
  $_GET['referrer'], 
  time() + 60*60*24*365, 
  $cookie_domain_https['path'], 
  '.somesite.com', // Parse out the base domain, and put it here with the leading "."
  true); //this is the parameter to set specify a secure cookie