我正在使用(客户端)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 存储了这两个值,但其他人理解密钥已被覆盖的概念。这是下一次加载的 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 出错了,还是什么?我看过一些帖子暗示 cookie 是键/值/日期三元组,但这似乎在其他地方不受支持,我在 W3C 文档中找不到规范。