IE 9中的重复cookie

时间:2012-08-06 03:56:59

标签: javascript internet-explorer http cookies

我正在使用(客户端)cookie(在javascript中)将用户选择的键/值对从一个会话存储到下一个会话以及从一个页面到另一个会话。似乎Chrome,Safari和Firefox都知道密钥只能有一个值,但IE会采用不同的视图。 例如: 我有一个功能(“viewMode”),可以使用四个用户可选值之一:-2,-1,0或1。 当我设置cookie时,我给它一个到期日为+ 100天。

function setCookie(c_name, value, expireDays) {
    expireDays *= 1;
    var expireDate = new Date();
    expireDate.setDate(expireDate.getDate() + expireDays);
    var c_value = escape(value) + ((expireDays == null) ? "" : "; expires=" + expireDate.toUTCString());
    document.cookie = c_name + "=" + c_value; 
}

默认值为0.当用户选择值时,例如1,生成呼叫

setCookie("viewMode", 1, 100); 

IE存储BOTH值,但其他人理解密钥被覆盖的概念。 这是下一次加载的HTTP GET的cookie组件:

Cookie: dispText=FileName; viewMode=0; MultiTrack=0; showClouds=0; smokeTrailLength=256; IGCAltSource=0; HideTracks=0; ColorSpeed=1; showCompass=0; viewMode=1; chosenDirectoryPath=C%3A%5CAlan%5CSTarTraXdata%5CTestTracks; IGCAltSource=1; showCockpitInstruments=0; showJavaOPenPopup=0; dispText=None; smokeTrailLength=-1; PHPSESSID=d96b0827725b1e6e313dcdfddfaed0a0

如您所见,cookie“viewMode”出现两次,一次是viewMode = 0,一次是viewMode = 1。 所以...是一个cookie真的是一个键/值对,IE错了,或者是什么? 我看过帖子表明cookies是关键/值/日期三倍,但在其他地方似乎没有支持,我在W3C doco中找不到规格。

1 个答案:

答案 0 :(得分:0)

这不是答案,但我的问题通过解决方法得到解决! 我甚至试图通过

删除viewMode cookie
document.cookie="viewMode =; expires=15/02/2003 00:00:00"; 

没有任何成功。

令人恼火的是,我删除了所有IE浏览器,现在一切正常!

似乎“viewMode = 1”cookie是某种怪物(“Cookie Monster”得到它哈哈),它没有响应被更改或删除。 现在我的页面很乐意按预期更新viewMode cookie。

所以我有一个解决方法,但我仍然想知道真正发生了什么。