【问题标题】:How do I use sessions across subdomains on localhost?如何在 localhost 上跨子域使用会话?
【发布时间】:2011-09-06 11:23:49
【问题描述】:

我通过session_set_save_handler 将所有会话存储在MySQL 中,但现在我需要在本地主机上跨子域使用会话。这甚至可以在本地主机上工作吗?

我已经添加了:

ini_set('session.cookie_domain', '.localhost');

我的代码,但这似乎也没有解决问题,可能是因为我在本地主机上运行代码。或者有什么解决方法可以在 localhost 上使用它?

顺便说一句,我在 Win7 上使用 XAMPP。

示例:

http://localhost 的 session_id 为 2oog13m67rr1sd1gk94lbf1he2

http://sub.localhost 的 session_id 为 3vr0pdqljothmmf4btlenvk047

所以,我猜你不能将.localhost 用于session.cookie_domain

【问题讨论】:

  • 为什么不使用hosts 文件来设置像mypc.local 这样的“正确”域名?它可能会在localhost 上窒息,因为它只有一个组件
  • 我添加了whatever.local,它现在正在工作。至少在 Firefox 中,但不是在 Chrome 中,正如下面 Alvaro 已经提到的。谢谢,佩卡!

标签: php session localhost


【解决方案1】:

我尝试为 .localhost.com 设置 cookie 并且成功了。 您可以在机器的主机文件中添加 localhost.com 的条目以指向 127.0.0.1 然后浏览器会将localhost.com的cookies转发到http://sub.localhost.com

它在 node.js 上对我有用,我认为类似的东西也应该在 php 上工作

【讨论】:

    【解决方案2】:

    既然你已经在编域名了,我建议你不要重复使用顶级域名。要么使用你拥有的一个,要么发明一个全新的。 localhost 这个名字已经有了明确的含义,这可能会导致您面临的问题。特别是,浏览器会根据 TLD 施加限制,因此您无法设置 cookie .com.co.uk。我很确定localhost 在大多数浏览器中也有自己的规则。

    更新:如果您使用的是 Chrome,请参阅 this bug report 解析为无效

    您只能为注册表控制的域设置域 cookie,即 以 .com 左右结尾的东西,但不是 IP 或 Intranet 主机名,例如 本地主机

    相关问题:Localhost Cookie

    【讨论】:

    • 我会在 Firefox 中测试它。谢谢阿尔瓦罗!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 2014-09-25
    • 2014-05-10
    • 2017-11-22
    • 2021-01-25
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多