【问题标题】:php cookies doesn't work without WWW or with subdomainphp cookie 在没有 WWW 或子域的情况下不起作用
【发布时间】:2013-02-23 04:22:57
【问题描述】:

我有一个奇怪的问题。我有一个脚本,它将为每个访问的页面添加一个数字到一个数组中,然后将它放入 cookie 中。

然后在另一个页面上,它将显示 cookie 中的数字列表。

它在我的域 (https) 上与 WWW 完美运行:https://www.mydomain.com

问题是如果没有 WWW (https://mydomain.com),它将无法工作。似乎有两种不同的 cookie:一种用于https://mydomain.com,另一种用于https://www.mydomain.com

我还想共享没有 https 的子域的 cookie

所以基本上它应该是相同的 cookie:

https://www.domain.com
https://domain.com
http://subdomain.domain.com

我该怎么做?

目前,我使用:

setcookie("viewed_articles", serialize($lastviewedarticles));

【问题讨论】:

    标签: php cookies https subdomain


    【解决方案1】:

    这是正确的行为。当您设置cookie时,您需要为.domain.com设置它,它将适用于domain.com中包含的所有域。

    setcookie("viewed_articles", serialize($lastviewedarticles), time()+60*60*24*30, '/', '.domain.com');
    

    这里的代码将cookie设置为30天,并为整个domain.com

    【讨论】:

    • 试过了,但没有用。也许是因为我使用 https ?
    • 您可以尝试setcookie("viewed_articles", serialize($lastviewedarticles), time()+60*60*24*30, '/', '.domain.com',true,true);,它只允许通过 HTTPS 设置 cookie,但我怀疑这是问题所在。您是否尝试在您请求的同一个域上设置 cookie?另外,请尝试清除浏览器 cookie,看看是否有帮助。
    【解决方案2】:

    请参阅php-docs 获取 setcookie。您可以在过期值之后添加域和路径。

    将路径设置为/,将域设置为.mydomain.com,以便为您的站点设置全局cookie。

    【讨论】:

      【解决方案3】:

      在 cookie 中设置域,同时设置 http-only 值来避免可能的 xss

      setcookie("viewed_articles", serialize($lastviewedarticles), time()+3600, '/', '.yourdomain.com',0,1);
      

      【讨论】:

      • 什么是 http-only 值?
      猜你喜欢
      • 2014-03-27
      • 1970-01-01
      • 2019-05-23
      • 2016-08-01
      • 1970-01-01
      • 2011-01-21
      • 2012-06-05
      • 1970-01-01
      • 2017-12-18
      相关资源
      最近更新 更多