zoukankan      html  css  js  c++  java
  • 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
    	}
    }
    

    参考文档

  • 相关阅读:
    算法与数据结构9
    算法与数据结构8
    数据结构与算法7
    数据结构与算法6
    计算机视觉(七)
    计算机视觉(六)
    计算机视觉(五)
    vscode 创建java项目
    vue 访问API接口
    vscode+vue 框架搭建
  • 原文地址:https://www.cnblogs.com/52liming/p/9536805.html
Copyright © 2011-2022 走看看