Why won't asp.net create cookies in localhost?
好的,这真的有点开始让我烦恼。 我有一个简单的Web项目设置位于:"C: Projects MyTestProject"。 在我的机器上的IIS中,我已经将虚拟目录映射到此位置,因此我可以在本地运行我的站点(我知道我可以从Visual Studio运行它,我更喜欢这种方法)。 我已将此虚拟目录命名为"mtp",我通过http://localhost/mtp/index.aspx访问它。 这一切都很好。
但是,每当我尝试创建一个cookie时,它根本就不会被写出来? 我在FF3和IE7中试过这个,它只是简单的不会写出cookie。 我不明白。 我的主机文件中有"127.0.0.1 localhost",我真的想不出我能做的其他事情。 谢谢你的建议。
詹姆士
cookie规范需要两个名称和一个点之间,因此您的cookiedomain不能是"localhost"。这是我解决它的方式:
将其添加到%WINDIR% System32 drivers etc hosts文件中:
127.0.0.1 dev.livesite.com
在开发时,使用http://dev.livesite.com而不是http:// localhost
在创建cookie时,使用".livesite.com"作为cookiedomain(在开头有一个点)。
现代浏览器不再需要前导点,但您可能希望无论如何都要使用后向兼容性。
现在它适用于所有网站:
- http://dev.livesite.com
- http://www.livesite.com
- http://livesite.com
由于答案从未被选中,我想我仍然可以扔掉其他东西。
使用在localhost下运行的应用程序编写的cookie不会遇到的一个原因是web.config中的httpCookies设置。如果域属性设置为特定域并且您在localhost下运行,则不会为我编写cookie。
删除开发中的域属性并编写cookie:
1 2 3 4 | <!-- Development --> <httpCookies httpOnlyCookies="true" requireSSL="false" /> <!-- Production --> <!--<httpCookies domain=".domain.com" httpOnlyCookies="true" requireSSL="true" />--> |
您是否为cookie分配了到期日期?默认情况下,cookie将在浏览器会话到期时到期,这意味着它不会向磁盘写入任何内容。