Cookie的作用范围、设置、创建、获取的方法
cookie的作用范围
同一浏览器,同一路径
默认情况下,
上级目录设置的cookie,下级目录可以获取到,
而下级目录设置的cookie,上级目录不能获取。
即:在一个页面设置cookie,那么这个页面的同一路径和子路径下的页面都可以获取cookie
示例如下:family文件夹下有children文件夹和a.html,b.html;chilren文件夹下有aa.html
若在a.html设置cookie:one=father;那么a.html,b.html和aa.html都可以获取到cookie:one=father;
然后再aa.html设置cookie:two=son,那么只有aa.html可以获取到cookie:two=son,
a.html和b.html都获取不到cookie:two=son
问题如何让上级获取到下级目录设置的cookie呢
则设置path属性,
设置整站都可以访问,上级就可以获取下级设置的cookie了
document.cookie = "key=value;path=/"
如果还需要设置cookie的到期时间
需要expires属性
格式为
document.cookie = "key=value;expires=到期时间"
示例
var date = new Date(); //设置有效时间为一个小时,一小时过后,将被浏览器删除 var expireTime = 30*60 * 1000; date.setTime(date.getTime() + expireTime); //escape()的作用:一种编码方式 document.cookie = "key=value;expires="+ date.toGMTString();
若cookie需设置多个属性,属性之间用分号";"隔开
示例同时需要设置expires和path属性
document.cookie = "key=value;expires=到期时间;path=/"
cookie创建的函数
function saveCookie(key, value) { var date = new Date(); //设置过期时间为一个小时 var expireTime = 60*60 * 1000; date.setTime(date.getTime() + expireTime); //escape()的作用:一种编码方式 //设置cookie过期时间为一小时以后,整站可以访问cookie document.cookie = key + "=" + escape(value) + ";expires=" + date.toGMTString();+"path=/"; }
获取cookie函数
function getCookie(key) { // 可以搜索RegExp和match进行学习 var arr, reg = new RegExp("(^| )" + key+ "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) { // unescape的作用解码通过escape编码的字符串 return unescape(arr[2]); } else { return null; } }