使用PHP/Nginx将cookie域从无域迁移到.mydomain.com


Migrate cookie domain from no domain to .mydomain.com with PHP/Nginx

我有一个用PHP编写的网站,运行在Nginx HTTP服务器上。我有一个名为"locale"的cookie,它表示用户的区域设置。6个月以来,我一直在发送这样的cookie:

setCookie("locale", "fr", time() + 36000, "/");

作为一个没有cookie的域,我知道它只在我的单个域"www.mydomain.com"上可用。

但现在,我想创建2个新闻子域:

  1. m.mydomain.com(移动部分)
  2. secure.mydomain.com(安全版本)

我看到在www上设置的"locale"cookie无法被m或安全访问。所以现在我发送的cookie是这样的:

setCookie("locale", "fr", time() + 36000, "/", ".mydomain.com");

是的,我的饼干现在到处都有!但由于我有一些用户已经浏览过我的网站,他们有无域cookie+新的cookie,他们的浏览器向我发送了两个cookie,但PHP给了我前一个。因此,没有人可以再更改区域设置。

问题是:如何从这个无域cookie迁移到指定域的cookie?不更改cookie名称。

您在没有域的情况下设置的第一个cookie默认为www.mydomain.com,因为它比".mydomain.com"更具体,所以它选择了原始cookie。请在此处阅读已接受的答案。

如何获取特定cookie的域?

作为结论,我将在一周内将其放在我的index.php文件中:

setCookie('locale', null, time() - 5000, '/');

为了删除无域cookie。我已经在所有主要浏览器上进行了测试,我看不出与有任何冲突

setCookie('locale', 'fr', time() + 36000, '/', '.mydomain.com');