码迷,mamicode.com
首页 > 其他好文 > 详细

Cookie写入之path的坑

时间:2018-08-26 12:33:43      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:开发者   dem   string   设置   escape   浏览器   doc   pre   fun   

问题

我在/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
    }
}

参考文档

Cookie写入之path的坑

标签:开发者   dem   string   设置   escape   浏览器   doc   pre   fun   

原文地址:https://www.cnblogs.com/52liming/p/9536805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!