2012-06-14 21 views
1

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

我有兩個網站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"; 
    } 
} 
+0

你看過這個問題的答案(尤其是@ aleemb的回答)嗎? http://stackoverflow.com/questions/939268/cross-domain-cookie-access-or-session?rq=1 – Kane

+0

找到這篇文章'http://www.codeproject.com/Articles/106439/Single-Sign- On-SSO-for-cross-domain-ASP-NET-applic' – JayOnDotNet

+0

@Jaya Prakash Rokkam,是的,我讀過你提到的文章,我在這裏所做的完全是遵循「非常基本的跨域SSO實現模型「。但是,似乎通過重定向傳輸Cookie不起作用在我的代碼:( – purplewill

回答

1

不要麻煩設置跨域cookies,它們在大多數情況下會在所有現代瀏覽器中被阻止。

使用帶參數和服務器端加密的純HTTP HTTP來執行跨域SSO。

例如,頁面上www.web1.com/Default.aspx您可以添加一個隱藏的iframe一些特殊的頁面www.web2.com/sso.aspx?userid=<encrypted,timestamped userid>這反過來會設置cookie上web2.com