【问题标题】:Cookies Are Only Set For Site With www. PrefixCookie 仅适用于带有 www 的网站。字首
【发布时间】:2012-06-21 00:41:24
【问题描述】:

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

【问题讨论】:

标签: php apache cookies


【解决方案1】:

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();
}

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

【讨论】:

  • 好点子。此外,如果服务器重定向响应到站点的公共 url,而不是指向相同内容的多个路径,则 SEO 通常会更高。
  • 如何设置这样的重定向?
  • 已编辑帖子,其中包含一些示例代码,您可以将其放在处理页面(或安全区域内的所有页面)的最顶部。
  • 谢谢你的代码,我开始明白一切了。
  • 没有问题。我注意到我的代码有两个错误并为您修复了它们(以防万一您使用它)。
【解决方案2】:

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

【讨论】:

  • 我按照你的建议做了,但现在出现了相反的问题。该站点在 mysite.com 上正确读取 cookie,但在 www.mysite.com 上,站点的运行就像不存在 cookie。
  • @user532493:我不知道为什么,我过去多次成功地使用过这种方法。可能值得发布创建 cookie 的代码以确保其正确执行。
【解决方案3】:

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

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

【讨论】:

  • 我的 .htaccess 文件中已经有这个指令:RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ $1.php [L,QSA] 我应该把你的代码放在它下面吗?
  • 以上,这些只是限制文件和目录以及完整的url重写。
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
相关资源
最近更新 更多