摘要:例如,如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑的域名部分。與早期規(guī)范相反的是,在域名前面加符將會(huì)被忽視,因?yàn)闉g覽器也許會(huì)拒絕設(shè)置這樣的。
工作中有好多同事問我,那個(gè)誰,為什么我用網(wǎng)上封裝的獲取cookie的方法卻獲取不到自己網(wǎng)站上的cookie呢?
這個(gè)問題,我們還要從document.cookie說起(其實(shí)網(wǎng)上封裝的獲取cookie的方法里面也是用的這個(gè)方法),
MDN上給的文檔:
注意,這里給出的解釋是獲取所有可從此位置訪問到的cookie;
不著急,咱們繼續(xù)往下看;
這是文檔里給出的屬性值;
;path=path (例如 "/", "/mydir") 如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑。
;domain=domain (例如 "example.com", "subdomain.example.com") 如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑的域名部分。與早期規(guī)范相反的是,在域名前面加 . 符將會(huì)被忽視,因?yàn)闉g覽器也許會(huì)拒絕設(shè)置這樣的cookie。如果指定了一個(gè)域,那么子域也包含在內(nèi)。
;max-age=max-age-in-seconds (例如一年為606024*365)
;expires=date-in-GMTString-format 如果沒有定義,cookie會(huì)在對(duì)話結(jié)束時(shí)過期
;secure (cookie只通過https協(xié)議傳輸)
其實(shí)造成取不到值得主要原因就是path這個(gè)屬性,
這里的path屬性是指你可以從xxx.xxx.com/xxx/x中訪問到cookie(當(dāng)時(shí)是在這個(gè)頁面設(shè)置的cookie),但在xxx.xxx.com這個(gè)目錄下是訪問不到此cookie的;
這就相當(dāng)于你在A店里定了一盒曲奇餅干,但你去B店拿,顯然是拿不到的。
在瀏覽器中也可以很方便很直觀的看到區(qū)別:
但是這里也有一個(gè)規(guī)則,就是子文件夾下的頁面可以訪問上級(jí)頁面存下的cookie,但父級(jí)文件夾的頁面訪問不到子文件夾下的頁面創(chuàng)建的cookie;
所以,通常我們?cè)谠O(shè)置cookie的時(shí)候,可以統(tǒng)一把path設(shè)置為/;
下面附cookie的CRUD代碼:
var cookie = { /** * 設(shè)置cookie * @param name cookie的名稱 * @param value cookie的值 * @param day cookie的過期時(shí)間 */ setCookie: function (name, value, day) { if (day !== 0) { //當(dāng)設(shè)置的時(shí)間等于0時(shí),不設(shè)置expires屬性,cookie在瀏覽器關(guān)閉后刪除 var expires = day * 24 * 60 * 60 * 1000; var date = new Date(+new Date() + expires); document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString()+";path=/"; } else { document.cookie = name + "=" + escape(value)+";path=/"; } }, /** * 獲取對(duì)應(yīng)名稱的cookie * @param name cookie的名稱 * @returns {null} 不存在時(shí),返回null */ getCookie: function (name) { var arr; var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); if (arr = document.cookie.match(reg)) return unescape(arr[2]); else return null; }, /** * 刪除cookie * @param name cookie的名稱 */ delCookie: function (name) { this.setCookie(name, " ", -1); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/54090.html
摘要:例如,如果沒有定義,默認(rèn)為當(dāng)前文檔位置的路徑的域名部分。與早期規(guī)范相反的是,在域名前面加符將會(huì)被忽視,因?yàn)闉g覽器也許會(huì)拒絕設(shè)置這樣的。 工作中有好多同事問我,那個(gè)誰,為什么我用網(wǎng)上封裝的獲取cookie的方法卻獲取不到自己網(wǎng)站上的cookie呢? 這個(gè)問題,我們還要從document.cookie說起(其實(shí)網(wǎng)上封裝的獲取cookie的方法里面也是用的這個(gè)方法),MDN上給的文檔:sho...
摘要:保存中文上面我們的例子保存的是英文字符,下面我們來看下保存中文字符會(huì)怎么樣。出異常了中文屬于字符,英文數(shù)據(jù)字符,中文占個(gè)字符或者個(gè)字符,英文占個(gè)字符。如果為,則表示刪除該。的值規(guī)定為域名的隱私安全機(jī)制決定是不可跨域名的。 什么是會(huì)話技術(shù) 基本概念: 指用戶開一個(gè)瀏覽器,訪問一個(gè)網(wǎng)站,只要不關(guān)閉該瀏覽器,不管該用戶點(diǎn)擊多少個(gè)超鏈接,訪問多少資源,直到用戶關(guān)閉瀏覽器,整個(gè)這個(gè)過程我們稱為一...
閱讀 812·2021-11-23 09:51
閱讀 2525·2021-10-11 11:10
閱讀 1397·2021-09-23 11:21
閱讀 1182·2021-09-10 10:50
閱讀 952·2019-08-30 15:54
閱讀 3390·2019-08-30 15:53
閱讀 3351·2019-08-30 15:53
閱讀 3263·2019-08-29 17:23