2

我想知道为什么这两个会话有区别?如果我有一个登录表单并将会话传递到一个页面(即:)settings.php。如果我有localhost/settings.php会话将工作,如果我去不同的页面并回来。但如果是127.0.0.1/settings.php,会话将在第一次通过,然后如果我重定向到其他地方并返回,它不再存在。

这也发生在其他人身上吗?还是这只是我?

谢谢

4

2 回答 2

4

也许这会有所帮助: http ://www.issociate.de/board/post/179979/Cookie_Problems_on_Localhost.html

'localhost' 和任何 ip 都不被接受为 cookie 中的有效域标识符(根据 RFC)。

和 127.0.0.1 != localhost 用于浏览器。浏览器不会将从 127.0.0.1 设置的 cookie 发送到 localhost,因为它们是不同的域。

ps 在实践中,一个 ip 上可以有多个域。当然,出于安全原因,浏览器不能完全发送所有 cookie(想象一下,浏览器可以将来自您网站的 cookie 发送到具有相同 IP 的虚拟主机上的所有网站)。

于 2012-05-19T08:59:53.560 回答
3

由于@true 的回答中提到的问题,在我们的开发中,我们通常会创建一个虚假的本地域,例如 dev.localhost.net,并使用 hosts 文件将其映射到机器 IP 地址或 127.0.0.1。这有助于解决会话/cookie 问题。

于 2012-05-19T09:03:50.680 回答