Javascript操作cookie方法的整理

本文介绍了一种通过使用Cookie来解决由负载均衡引起的Session状态丢失问题的方法,并提供了实用的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=/表示缓存至根目录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值