如何使用重定向设置跨域Cookie?

时间:2012-06-14 03:04:35

标签: asp.net cookies cross-domain single-sign-on

大家

我有两个网站www.web1.com和www.web2.com。现在我想在web1中编写一个cookie,并通过Response.Redirect将其写入web2。 如果它有效,我想通过这种方法实现一个简单的sso。 但是,我无法在web2中读取cookie。有人可以帮助我找出我的代码是否有问题,或者cookie不能通过这种方式共享跨域共享。 感谢:)

这是代码:

在www.web1.com/Default.aspx

protected void Page_Load(object sender, EventArgs e)
{
    HttpCookie ck = new HttpCookie("userid", "00000001");

    ck.Expires = DateTime.Now.AddDays(1);

    ck.Domain = ".web2.com";

    Response.Cookies.Add(ck);

    Response.Redirect("http://www.web2.com/Default.aspx");
}

和www.web2.com/Default.aspx中的代码

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Cookies["userid"] != null)
    {
        lbCookie.Text = Request.Cookies["userid"].Value;
    }
    else
    {
        lbCookie.Text = "No Cookies";
    }
}

1 个答案:

答案 0 :(得分:1)

不要打扰设置跨域cookie,在大多数情况下,它们将在所有现代浏览器中被阻止。

使用带参数的纯HTTP GET和服务器端加密来执行跨域SSO。

例如,在页面www.web1.com/Default.aspx上,您可以将隐藏的IFrame添加到某个特殊页面www.web2.com/sso.aspx?userid=<encrypted,timestamped userid>,然后这个页面会在web2.com上设置Cookie。