我遇到跨域Cookie问题。我阅读了很多关于在子域之间共享cookie的文档。所有文章的主要思想是将Domain属性设置为“.mydomain.com”。我在本地IIS服务器上创建了两个域 - test1.local.boo 和 test2.local.boo 。它们在浏览器中运行良好且可见。我有以下代码:
Site test1 - 写入cookie:
HttpCookie myCookie = new HttpCookie("TestCookie");
myCookie.Domain = ".local.boo";
myCookie["msg"] = "Welcome from Cookie";
Response.Cookies.Add(myCookie);
Site test2 - 读取cookie:
HttpCookie cookie = Request.Cookies["TestCookie"];
if (cookie != null)
{
Response.Write(cookie["msg"]);
}
else
{
Response.Write("FAILED");
}
此代码始终显示FAILED消息。因此,这意味着第二个站点无法从同一个子域读取cookie。我的错误在哪里?
答案 0 :(得分:1)
您可以使用fiddler等网络调试器检查浏览器是否返回了Cookie标头。
它会显示为每个请求和响应发送的标头和Cookie,因此您可以查看是否已设置了正确的域以及请求到第二个域的情况。
答案 1 :(得分:1)
嗯......问题出现在浏览器中...... Opera浏览器不会将cookie发送到同一子域中的其他站点。 Firefox和IE效果很好。无论如何,谢谢你们!
一些注意事项:如果你想从其他子域删除这样的cookie,那么你需要将Domain属性设置为:.mydomain.com - 我花了很多时间试图解决它。希望对某人有帮助
答案 2 :(得分:1)
在IIS 7中
将此添加到您的web.config
<system.webserver>
<httpProtocol>
<customHeaders>
<add name="p3p" value="CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"" />
</customHeaders>
</httpProtocol>
</system.webServer>
在II6中。
inetmgr
答案 3 :(得分:0)
尝试设置expires属性,或者在usersession结束时删除它的可能性。
答案 4 :(得分:0)
尝试将过期日期设置为将来某个时间点:
cookie.Expires = DateTime.Now.AddYears(5);