【问题标题】:Cross Domain Cookies Problem (ASP.NET)跨域 Cookie 问题 (ASP.NET)
【发布时间】:2011-02-12 12:09:00
【问题描述】:

我遇到了跨域 cookie 的问题。我阅读了很多关于在子域之间共享 cookie 的文档。所有文章的主要思想是将域属性设置为“.mydomain.com”。我在本地 IIS 服务器上创建了两个域 - test1.local.bootest2.local.boo。它们在浏览器中运行良好且可见。我有以下代码:

站点 test1 - 写入 cookie:

HttpCookie myCookie = new HttpCookie("TestCookie");
myCookie.Domain = ".local.boo";
myCookie["msg"] = "Welcome from Cookie";
Response.Cookies.Add(myCookie);

站点 test2 - 读取 cookie:

HttpCookie cookie = Request.Cookies["TestCookie"];
if (cookie != null)
{
    Response.Write(cookie["msg"]);
}
else
{
    Response.Write("FAILED");
}

此代码始终显示 FAILED 消息。所以这意味着第二个站点无法从同一个子域读取 cookie。我的错在哪里??

【问题讨论】:

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


    【解决方案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
    • 展开[服务器] > 网站
    • [您的网站]中的右键单击
    • 属性
    • HTTP 标头
    • 添加...
    • 自定义标题名称:p3p
    • 自定义标头值:CP="NOI ADM DEV PSAi COM NAV OUR OTR STP IND DEM"
    • 好的
    • 好的

    【讨论】:

    • 两个座位都必须有这个吗?这些选项记录在哪里?
    【解决方案2】:

    嗯...问题出在浏览器上...Opera 浏览器不会将 cookie 发送到同一子域上的其他站点。 Firefox 和 IE 效果很好。无论如何,谢谢你们!

    一些注意事项:如果您想从其他子域中删除此类 cookie,则需要将域属性设置为:.mydomain.com - 我花了很多时间试图弄清楚。希望它对某人有所帮助

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        您可以使用fiddler 等网络调试器检查浏览器是否正在返回cookie 标头。

        它将显示为每个请求和响应发送的标头和 cookie,因此您可以查看是否设置了正确的域以及对第二个域的请求会发生什么。

        【讨论】:

          【解决方案5】:

          尝试设置 expires 属性,或者在用户会话结束时将其删除。

          【讨论】:

            猜你喜欢
            • 2011-02-25
            • 2014-09-28
            • 2011-11-27
            • 2012-04-11
            • 1970-01-01
            • 2017-10-31
            • 2011-03-18
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多