我一定缺少关于Cookie的一些基本知识。在本地主机上,当我设置在服务器端的cookie,并明确指定域为localhost(或.localhost)。该cookie似乎未被某些浏览器接受。
Firefox 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似乎也没有被存储,因为它不会在随后的请求中发回。
Opera 9.64: localhost和.localhost都可以使用,但是当我在“首选项”中检查cookie列表时,即使该域在localhost(在列表分组中)下列出,该域也设置为localhost.local。
Safari 4: localhost和.localhost都可以使用,但是在“首选项”中它们始终列为.localhost。另一方面,没有显式域的cookie,仅显示为localhost(无点)。
本地主机有什么问题?由于存在许多这样的不一致,因此必须有一些涉及本地主机的特殊规则。另外,我还不完全清楚为什么必须在域名前加点号?RFC 2109明确指出:
域属性的值不包含嵌入的点或不以点开头。
为什么?该文件表明它必须在安全方面做些事情。我不得不承认我还没有阅读整个规范(以后可能会做),但这听起来有些奇怪。基于此,将不可能在本地主机上设置cookie。