js 设置cookies 过时了为什么还能读到?

JavaScript012

js 设置cookies 过时了为什么还能读到?,第1张

了解一下cookie的创建与删除机制

创建:

由header中的setcookie创建,由js创建等

删除:

当打开一个页面后,浏览器先检查cookie的有效期,过期就删除cookie

但如果你没有重新打开含过期cookie的页面,则cookie永远不会过期,就是说cookie不会自己主动被删除,而是在访问时发现已过期才会被删除

你这个代码都在一个页面,只有在页面载入时检测cookie是否过期,所以仍能够读取到过期的cookie

//JS操作cookies方法!

//写cookies

function setCookie(name,value)

{

var Days = 30

var exp = new Date()

exp.setTime(exp.getTime() + Days*24*60*60*1000)

document.cookie = name + ”=”+ escape (value) + ”expires=” + exp.toGMTString()

}

//读取cookies

function getCookie(name)

{

var arr,reg=new RegExp(”(^| )”+name+”=([^]*)(|$)”)

if(arr=document.cookie.match(reg)) return unescape(arr[2])

else return null

}

//删除cookies

function delCookie(name)

{

var exp = new Date()

exp.setTime(exp.getTime() - 1)

var cval=getCookie(name)

if(cval!=null) document.cookie= name + ”=”+cval+”expires=”+exp.toGMTString()

}

//使用示例

setCookie(”name”,”hayden”)

alert(getCookie(”name”))

//如果需要设定自定义过期时间

//那么把上面的setCookie 函数换成下面两个函数就ok

//程序代码

function setCookie(name,value,time){

var strsec = getsec(time)

var exp = new Date()

exp.setTime(exp.getTime() + strsec*1)

document.cookie = name + ”=”+ escape (value) + ”expires=” + exp.toGMTString()

}

function getsec(str){

alert(str)

var str1=str.substring(1,str.length)*1

var str2=str.substring(0,1)

if (str2==”s”){

return str1*1000

}else if (str2==”h”){

return str1*60*60*1000

}else if (str2==”d”){

return str1*24*60*60*1000

}

}

//这是有设定过期时间的使用示例:

//s20是代表20秒

//h是指小时,如12小时则是:h12

//d是天数,30天则:d30

//暂时只写了这三种

setCookie(”name”,”hayden”,”s20″)