为什么localhost与127.0.0.1的区别在于SESSIONS

时间:2012-05-19 08:51:05

标签: php session localhost

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

这也会发生在其他人身上吗?或者这只是我?

由于

2 个答案:

答案 0 :(得分: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,因为它们是不同的域。

P.S。实际上,一个ip上可以有很多域。当然,出于安全原因,浏览器无法完全发送所有cookie(想象一下,您的网站上的cookie可以通过浏览器发送到虚拟主机上使用相同IP的所有网站)。

答案 1 :(得分:3)

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