我想知道为什么这两个会话有什么不同?如果我有一个登录表单,它会将会话传递给页面(即:settings.php
)。如果我有localhost/settings.php
会话将起作用,如果我去另一页并回来。但如果它是127.0.0.1/settings.php
,会话将在第一次通过时工作,然后如果我重定向到其他地方并返回,它就不再存在了。
这也会发生在其他人身上吗?或者这只是我?
由于
答案 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问题。