在幕後,你可能設置相同的cookie的兩倍。 Firefox和IE可能會有所不同,他們選擇保留哪一個。 ASP.NET喜歡在很多Web應用程序中自動設置一個「guid」cookie。通過選擇這個名字,你必然會在自動邏輯和你自己的邏輯之間產生張力。查看所發生情況的最好方法是將Live HTTP Headers加載項加載到Firefox。它將允許您準確查看將哪些cookie命令發送給最終用戶。您還可以強制類似的問題,看看它重建:
HttpCookie hc = new HttpCookie("testcookie", "xyz");
hc.Expires = DateTime.Parse("12/12/2010");
Response.Cookies.Add(hc);
hc = new HttpCookie("testcookie", "abc");
Response.Cookies.Add(hc);
這將導致一個HTTP標頭有兩個Set-Cookie
電話:
Set-Cookie: testcookie=xyz; expires=Sun, 12-Dec-2010 07:00:00 GMT; path=/
Set-Cookie: testcookie=abc; expires=Sun, 12-Dec-2010 07:00:00 GMT; path=/
從那裏,它是由瀏覽器來決定是否第一或者最後是最終值。如果兩個瀏覽器以不同的方式進行,您最終會遇到您所描述的情況。安裝Live HTTP Headers插件並尋找類似的東西。至少,您應該考慮將「guid」作爲您應該在ASP.NET窗體應用程序中使用的cookie名稱。
如果您絕對需要讓多個地方設置相同的cookie,請嘗試先找到它(如果不存在,請創建一個新的地方)。這將確保您重寫現有Cookie的價值,而不是創建具有相同名稱的另一個Cookie。
HttpCookie hc = Response.Cookies["testcookie"];
if (null == hc) {
hc = new HttpCookie("testcookie");
Response.Cookies.Add(hc);
}
hc.Value = "xyz";
讓我想起這條芝麻街角色...... – mjv 2010-02-11 14:45:34
是Firefox阻止cookies嗎? http://www.wilderssecurity.com/showthread.php?t=246106 你使用Session嗎?它在Firefox中工作嗎? – Greg 2010-02-11 14:52:03
OM NOM NOM? (對不起,不能幫助我自己) – Lucas 2010-02-11 15:52:05