摘要:例如,如果沒有定義,默認為當前文檔位置的路徑的域名部分。與早期規范相反的是,在域名前面加符將會被忽視,因為瀏覽器也許會拒絕設置這樣的。
工作中有好多同事問我,那個誰,為什么我用網上封裝的獲取cookie的方法卻獲取不到自己網站上的cookie呢?
這個問題,我們還要從document.cookie說起(其實網上封裝的獲取cookie的方法里面也是用的這個方法),
MDN上給的文檔:
注意,這里給出的解釋是獲取所有可從此位置訪問到的cookie;
不著急,咱們繼續往下看;
這是文檔里給出的屬性值;
;path=path (例如 "/", "/mydir") 如果沒有定義,默認為當前文檔位置的路徑。
;domain=domain (例如 "example.com", "subdomain.example.com") 如果沒有定義,默認為當前文檔位置的路徑的域名部分。與早期規范相反的是,在域名前面加 . 符將會被忽視,因為瀏覽器也許會拒絕設置這樣的cookie。如果指定了一個域,那么子域也包含在內。
;max-age=max-age-in-seconds (例如一年為606024*365)
;expires=date-in-GMTString-format 如果沒有定義,cookie會在對話結束時過期
;secure (cookie只通過https協議傳輸)
其實造成取不到值得主要原因就是path這個屬性,
這里的path屬性是指你可以從xxx.xxx.com/xxx/x中訪問到cookie(當時是在這個頁面設置的cookie),但在xxx.xxx.com這個目錄下是訪問不到此cookie的;
這就相當于你在A店里定了一盒曲奇餅干,但你去B店拿,顯然是拿不到的。
在瀏覽器中也可以很方便很直觀的看到區別:
但是這里也有一個規則,就是子文件夾下的頁面可以訪問上級頁面存下的cookie,但父級文件夾的頁面訪問不到子文件夾下的頁面創建的cookie;
所以,通常我們在設置cookie的時候,可以統一把path設置為/;
下面附cookie的CRUD代碼:
var cookie = { /** * 設置cookie * @param name cookie的名稱 * @param value cookie的值 * @param day cookie的過期時間 */ setCookie: function (name, value, day) { if (day !== 0) { //當設置的時間等于0時,不設置expires屬性,cookie在瀏覽器關閉后刪除 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=/"; } }, /** * 獲取對應名稱的cookie * @param name cookie的名稱 * @returns {null} 不存在時,返回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); } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105086.html
摘要:例如,如果沒有定義,默認為當前文檔位置的路徑的域名部分。與早期規范相反的是,在域名前面加符將會被忽視,因為瀏覽器也許會拒絕設置這樣的。 工作中有好多同事問我,那個誰,為什么我用網上封裝的獲取cookie的方法卻獲取不到自己網站上的cookie呢? 這個問題,我們還要從document.cookie說起(其實網上封裝的獲取cookie的方法里面也是用的這個方法),MDN上給的文檔:sho...
摘要:保存中文上面我們的例子保存的是英文字符,下面我們來看下保存中文字符會怎么樣。出異常了中文屬于字符,英文數據字符,中文占個字符或者個字符,英文占個字符。如果為,則表示刪除該。的值規定為域名的隱私安全機制決定是不可跨域名的。 什么是會話技術 基本概念: 指用戶開一個瀏覽器,訪問一個網站,只要不關閉該瀏覽器,不管該用戶點擊多少個超鏈接,訪問多少資源,直到用戶關閉瀏覽器,整個這個過程我們稱為一...
閱讀 1827·2021-11-11 16:55
閱讀 1452·2019-08-30 15:54
閱讀 769·2019-08-29 15:34
閱讀 2253·2019-08-29 13:11
閱讀 2908·2019-08-26 13:28
閱讀 1878·2019-08-26 10:49
閱讀 992·2019-08-26 10:40
閱讀 2553·2019-08-23 18:21