Javascript操作cookie方法的整理

    最近一个项目,由于ISS上的负载均衡的配置,导致session这个缓存大利器暴露出它的弱点——session状态经常莫名丢失,让人很苦恼,后来缓存改为使用cookie,问题得以解决,当然,cookie缓存数据也有它的缺陷,比如,它不够安全,它缓存的数据不能超过4kb,但在这种情况下,却是解决问题的最合适的方法,以下便是整理出来的操作cookie的方法,这些方法适用于IE7、IE8、FireFox。

// 设置cookie function SetCookie(key, value) { var time = 5*60*1000; // 5分钟(毫秒单位) var exp = new Date(); exp.setTime(exp.getTime() + time); document.cookie = key + "=" + escape(value) + ";expires=" + exp.toGMTString(); } // 取cookies function getCookie(key) { var arr = document.cookie.match(new RegExp("(^| )" + key+ "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; } // 删除cookie function delCookie(key) { var exp = new Date(); exp.setTime(exp.getTime() - 1); var cval = getCookie(key); if (cval != null) document.cookie = key+ "=" + cval + ";expires=" + exp.toGMTString(); } //js获取url参数的function function request(paras) { var url = location.href; var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&"); var paraObj = {} for (i = 0; j = paraString[i]; i++) { paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") + 1, j.length); } var returnValue = paraObj[paras.toLowerCase()]; if (typeof (returnValue) == "undefined") { return ""; } else { return returnValue; } }

 

    后面还附加了一个从url中取参数的方法。

    这里要注意的是,使用这种方法设置的cookie值,在后台cs文件中,使用Response.Cookies.Remove()方法并不能移除,如果要清理cookie,必须在页面写清理脚本,加载页面时,执行清理脚本,才能达到清理目的。

 

   补充『2011-5-9 13:38』

   上述的SetCookie在使用过程中,碰到一个问题,cookie值莫名其妙或丢失或错乱或清理失败

    后来找到问题的症结所在,设置cookie时,需要设置cookie的保存路径,因此,方法改为以下的方法:

    function SetCookie(name, value)//两个参数,一个是cookie的名子,一个是值 { var exp = new Date(); exp.setTime(exp.getTime() + 5 * 60 * 1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + ";path=/;"; }

    path=/表示缓存至根目录。

 

你可能感兴趣的:(Asp.net)