Cookie寫入之path的坑
阿新 • • 發佈:2018-08-26
document date() 一個 dem 設置 return 通過 obj cap
問題
我在/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 } }
參考文檔
- HTTP cookies https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cookie
- document.cookie https://developer.mozilla.org/zh-CN/docs/Web/API/Document/cookie
- Set-Cookiehttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie
Cookie寫入之path的坑