Cookie 仅针对具有 www 的网站进行设置.前缀


Cookies Are Only Set For Site With www. Prefix

所以我正在创建一个用户必须登录的网站。如果用户希望网站记住他的登录信息,我会设置一个cookie来记住这些数据。但是,Cookie 似乎是为网站 www.mysite.com 设置的。这似乎意味着,如果我使用地址 mysite.com(没有www.)访问我的网站,则无法再访问cookie。如何制作,以便两个网站都可以访问任一站点上设置的 Cookie?

Brian Scott已经正确地回答了这个问题,但我想我会补充一下:

在我看来,如果您允许用户"记住"他们的登录信息,那么您将需要保持对方式/地点/原因/时间的特定控制,包括维护安全连接。

对于涉及任何类型的登录的项目,我始终确保我拥有适当的SSL证书和安全连接,然后检查他们用于访问站点的URL并重定向以确保它们留在我的安全域中。 例如,我检查一个 www。和 https 前缀,并始终重定向到 https://www.domain.com ... 只有我的两分钱。

编辑:回应评论。 只是真的很粗糙,但像这样:

if (($_SERVER['SERVER_PORT'] != '443') || ($_SERVER['HTTPS'] != 'on') || (!strstr ($_SERVER['HTTP_HOST'], 'www'))) {
  header ("Location: https://www.mydomain.com");
  exit();
}

第二次编辑:我的粗略键入代码中有两个错误。

将 cookie 设置为 .mysite.com 而不是 www.mysite.com。这样,cookie 将识别公共域后缀并与两个 url 兼容。

您不想同时使用两者。 选择一个,对SEO也更好。 我个人只是通过 htaccess 重定向到 www 并保持标准。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^www'.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]