多个 localhost 子域的 setcookie 用法

Posted

技术标签:

【中文标题】多个 localhost 子域的 setcookie 用法【英文标题】:setcookie usage for multiple localhost subdomains 【发布时间】:2012-02-13 07:10:51 【问题描述】:

我一直在我的本地主机 (xampp) 上开发一个 Web 应用程序,在那里我设置了两个子域。让我们将这些域称为 abc.localhost 和 xyz.localhost。

我在我的主机文件中设置了这两个条目以具有

127.0.0.1 abc.localhost
127.0.0.1 xyz.localhost

我还在我的 vhost 文件中设置了它们,就像正常指向不同的位置一样。

我的应用程序设置为首先通过 abc.localhost,这是我设置一些 cookie 的地方

setcookie('AUTHORIZATION', time()+3600, 0, '/', '.localhost');
setcookie('SOMEOTHERCOOKIE','here is the val',0,'/','.localhost');

然后将用户转发到 xyz.localhost。为了让用户能够访问 xyz.localhost,授权必须由 abc.localhost 设置并传递 cookie。

我尝试将“.localhost”更改为 xyz.localhost 以及我能想到的所有其他组合。离开 .也不行。

请帮我解决这个问题。谢谢!

【问题讨论】:

【参考方案1】:

您不能为***域(域的最后一部分)设置 cookie。为了实现您想要的,将您的 HOST 条目更改为 abc.myproject.loc 和 xyz.myproject.loc 或类似的东西。

然后您可以为 myproject.loc 设置 cookie。

【讨论】:

我应该能够为 xyz.localhost 设置 cookie 吗? 是的,你可以,但是abc.xyz.localhost等可以访问它,但abc.localhost不能。但是 localhost 是一个非常特殊的域,因此在您的浏览器中可能会对其进行一些更特殊的处理。

以上是关于多个 localhost 子域的 setcookie 用法的主要内容,如果未能解决你的问题,请参考以下文章

Xampp 上的多个子域

php setcookie 显式到本地主机

本地主机上的 rails 子域

如何在 IISExpress 上使用带有 localhost 的子域?

apache 虚拟主机子域只能由 localhost 访问

将子域添加到 localhost URL