【发布时间】:2012-08-07 08:58:57
【问题描述】:
我正在使用(客户端)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 文档中找不到规范。
【问题讨论】:
标签: javascript internet-explorer http cookies