跨域Cookie问题(ASP.NET)

时间:2010-04-26 17:04:42

标签: c# asp.net iis cookies cross-domain

我遇到跨域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。我的错误在哪里?

5 个答案:

答案 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=&quot;NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM&quot;" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

在II6中。

  • 运行inetmgr
  • 展开 [服务器] &gt;网站
  • [您的网站]
  • 中的右侧clic
  • 属性
  • HTTP标头
  • 添加...
  • 自定义标题名称: p3p
  • 自定义标题值: CP =“NOI ADM DEV PSAi COM NAV OUR STP IND DEM”

答案 3 :(得分:0)

尝试设置expires属性,或者在usersession结束时删除它的可能性。

答案 4 :(得分:0)

尝试将过期日期设置为将来某个时间点:

cookie.Expires = DateTime.Now.AddYears(5);