我打算找出一個瀏覽器特定問題(在Firefox和Chrome中)。我花了很多時間來嘗試解決這個問題,我終於想到爲這裏的專家創建一個現場演示來研究這個問題。 (希望不負有心人)無法通過302重定向在FireFox/Chrome中讀取cookie,但在IE中工作
我有兩個域www.nkmekal.com和www.incessantcoding.com
請使用Firefox/Chrome瀏覽器複製問題:
第1步:
瀏覽http://www.nkmekal.com/createcookie.aspx
該頁面只是創建一個cookie。下面是創建的cookie代碼:
// In On_Load of nkmekal.com/createCookie.aspx
HttpCookie cookie = new HttpCookie("DisCookie");
cookie.Value = "djdjd77676ydjdndgdidjkdnhf";
cookie.HttpOnly = true;
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
lblCookieInfo.Text = string.Format("<b>Cookie Name:</b> {0} <br/><br/> <b>Cookie Value:</b> {1} <br/><br/> <b>Cookie Expires On:</b> {2}", cookie.Name, cookie.Value, cookie.Expires);
第2步:
現在打開瀏覽器新標籤,轉到http://www.incessantcoding.com/GoTonkmekal.aspx基本上做一個簡單的302重定向到http://www.nkmekal.com/ReadCookie.aspx,下面是代碼,這是否重定向:
// In On_Load of incessantcoding.com/GoTonkmekal.aspx
protected void Page_Load(object sender, EventArgs e)
{
Response.Redirect("http://www.nkmekal.com/ReadCookie.aspx");
}
不過,我看到下面的消息:(請參閱ReadCookie.aspx頁的代碼步驟3)
「沒有cookie中:(」
這意味着域www.nkmekal.com無法讀取其先前創建的,當你瀏覽www.nkmekal.com/餅乾createcookie.aspx
步驟3:
而且http://www.nkmekal.com/ReadCookie.aspx頁面只是試圖讀取上述創建的cookie(步驟1),並顯示cookie數據。下面是試圖讀取cookie並將其顯示在頁面
// In On_Load of nkmekal/ReadCookie.aspx
HttpCookie cookie = Request.Cookies["DisCookie"];
if (cookie != null)
{
// Resetting expiry date because the browser never sends expiry date to Server,
// as cookies expiration dates are irrelevant to servers.
cookie.Expires = DateTime.Now.AddDays(1);
lblCookieInfo.Text = string.Format("<b>Yes! I found a cookie</b> <br><br><b>Cookie Name:</b> {0} <br/><br/> <b>Cookie Value:</b> {1} <br/><br/> <b>Cookie Expires On:</b> {2}", cookie.Name, cookie.Value, cookie.Expires);
}
else
{
lblCookieInfo.Text = "No Cookie Found :(";
}
上述步驟做工精細只能在IE瀏覽器,但不能在Firefox/Chrome瀏覽器的代碼。
另外,如果你想要採取偷看在這兩個領域的源代碼,你可以在
http://dl.dropbox.com/u/1248159/incessantcoding.zip
http://dl.dropbox.com/u/1248159/nkmekal.zip
下載它們爲什麼我試圖做到這一點:
所以,我試圖做到這一點的原因是,我需要在域執行某些操作www.incessantcoding.com如果在www.nkmekal中創建了一個cookie。com
而使用302重定向的原因是我們無法讀取跨域cookie,因此我試圖從相應的域中讀取cookie(因爲nkmekal.com只能讀取它的cookie)。
任何幫助/建議將會非常有幫助。
更新: 也相當有趣的是,如果步驟1和3位進行(離開了第2步),該cookie值在Firefox和鉻正確讀取。它只有302方式不起作用。
肯定這是真的,你無法讀取跨域餅乾... – Madhu 2012-02-08 06:49:50
是的!我發現一個cookie Cookie名稱:DisCookie Cookie值:djdjd77676ydjdndgdidjkdnhf Cookie的到期日爲:2012年2月8日下午11時03分08秒 – 2012-02-08 06:55:13
它爲我工作。 firefox 9.1,brgds – 2012-02-08 06:55:43