Cookie写入之path的坑
问题
我在/page/index/index.html
中向浏览器添加了一个useid的cookie(这里没有指定path), 然后试着从/page/demo/demo.html
中取值,发现无法取到,
通过开发者工具查看发现userid的path是/page/index/
, 所以无法在page/demo/
下面取到, 解决办法就是在添加cookie时指定path为/page/
, 这时page目录下的所有页面都可以获取到userid
另外, path只能设置为绝对路径
js操作cookie
添加cookie
/**
* 添加cookie
* @param {String} objName
* @param {String} objValue
* @param {Number} objHours
*/
function addCookie(objName,objValue,objHours){
var str = objName + "=" + escape(objValue);
if(objHours > 0){ // 如果不设定过期时间, 浏览器关闭时cookie会自动消失
var date = new Date()
var ms = objHours * 3600 * 1000;
date.setTime(date.getTime() + ms);
str += "; expires=" + date.toGMTString() + "; path=/page/;"; // 指定了cookie的path
}
document.cookie = str;
}
获取cookie
/**
* 获取指定名称的cookie值
* @param {Object} objName
*/
function getCookie(objName) {
var arrStr = document.cookie.split("; ");
for (var i = 0; i < arrStr.length; i ++) {
var temp = arrStr[i].split("=");
if(temp[0] == objName) return unescape(temp[1]);
}
}
删除cookie
/**
* 删除指定名称的cookie值
* @param {Object} objName
*/
function delCookie(objName) {
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval = getCookie(objName);
if (cval != null) {
document.cookie = objName + "=" + cval + "; expires=" + exp.toGMTString() + "; path=/page/;"; // 指定了cookie的path
}
}