我一定是错过了一些关于 cookie 的基本知识。在本地主机上,当我在服务器端设置 cookie 时and将域显式指定为 localhost(或 .localhost)。某些浏览器似乎不接受cookie。
火狐 3.5:我在 Firebug 中检查了 HTTP 请求。我看到的是:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
或(当我将域设置为 .localhost 时):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
无论哪种情况,都不会存储 cookie。
IE8:我没有使用任何额外的工具,但 cookie 似乎也没有被存储,因为它没有在后续请求中被发送回。
歌剧 9.64:localhost 和 .localhostwork,但是当我检查首选项中的 cookie 列表时,域被设置为 localhost.local,即使它列在 localhost 下(在列表分组中)。
狩猎4:localhost 和 .localhostwork,但它们始终在首选项中列为 .localhost。另一方面,没有显式域的 cookie,它仅显示为 localhost(无点)。
本地主机有什么问题?由于存在如此多的不一致之处,必须有一些涉及 localhost 的特殊规则。另外,我不太清楚为什么域名必须以点为前缀? RFC 2109 明确指出:
域属性的值
不包含嵌入点或不包含嵌入点
以点开头。
为什么?该文件表明它必须采取一些与安全有关的措施。我不得不承认我还没有阅读整个规范(可能稍后会阅读),但这听起来有点奇怪。基于此,在本地主机上设置 cookie 是不可能的。