我一定错过了一些关于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=/
Run Code Online (Sandbox Code Playgroud)
或者(当我将域设置为.localhost时):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
Run Code Online (Sandbox Code Playgroud)
在任何一种情况下,都不会存储cookie.
IE8:我没有使用任何额外的工具,但cookie似乎也没有存储,因为它不会在后续请求中发回.
Opera 9.64: localhost和.localhost都工作,但是当我检查Preferences中的cookie列表时,域名设置为localhost.local,即使它列在localhost下(在列表分组中).
Safari 4: localhost和.localhost都可以工作,但它们在Preferences中始终列为.localhost.另一方面,没有显式域的cookie,它显示为localhost(无点).
localhost有什么问题?由于存在这么多的不一致,必须有一些涉及localhost的特殊规则.另外,我不完全清楚为什么域名必须以点为前缀?RFC 2109明确声明:
Domain属性的值不包含嵌入点或不以点开头.
为什么?该文件表明它必须对安全做些什么.我不得不承认我没有阅读整个规范(稍后可能会这样做),但听起来有点奇怪.基于此,在localhost上设置cookie是不可能的.
好的,这真的有点开始让我烦恼.我有一个简单的Web项目设置位于:"C:\ Projects\MyTestProject \".在我的机器上的IIS中,我已经将虚拟目录映射到此位置,因此我可以在本地运行我的站点(我知道我可以从Visual Studio运行它,我更喜欢这种方法).我已将此虚拟目录命名为"mtp",我通过http://localhost/mtp/index.aspx访问它.这一切都很好.
但是,每当我尝试创建一个cookie时,它根本就不会被写出来?我在FF3和IE7中试过这个,它只是简单的不会写出cookie.我不明白.我的主机文件中有"127.0.0.1 localhost",我真的无法想到我能做的其他事情.谢谢你的建议.
詹姆士