JavaScript Cookie操作 筆記

來源:互聯網
上載者:User

 

cookie的屬性

 

expires 生存期

 

預設:會話期間存在(使用者關閉瀏覽器後,cookie值被銷毀) 

其他:日期格式規範為GMT(或UCT)"Weekday, DD-Mon-YYYY HH:MM:SS GMT" 解決方案是使用Date對象。

 

path 可訪問的路徑

 

預設:建立該cookie值的網頁路徑(cookie只能被同在目前的目錄中的其他頁面,或者目前的目錄的子目錄中的頁面訪問)

其他:可以將path設定為“/”以使整個伺服器域都可訪問這個cookie成員

 

domain 可訪問域

 

預設:當前域

其他:不同子域間將不能相互訪問

 

secure 安全性(指定了在網路上傳輸cookie值的方式)

 

預設:false

其他:false - 普通的、不安全的http串連;true - https或其他安全性通訊協定

 

日期格式擷取執行個體

 

var nextyear = new Date();
nextyear.setFullYear(nextyear.getFullYear() + 1);
expiretime = nextyear.toGMTString();

 

一個簡單的封裝實現

 

// 有關cookie的操作
function Cookie() {};

// 設定cookie值
// 參數:cookie名,值,生存天數,生存小時數
Cookie.setCookie = function(name, value, days, hours) {
    // 如果沒有傳入生存期,則預設為0天2小時
    days = days || 0;
    hours = hours || 2;
    var expTime = new Date();
    expTime.setDate(expTime.getDate() + days);
    expTime.setHours(expTime.getHours() + hours);
    document.cookie = escape(name) + "=" + escape(value) + 
        ";" + "expires=" + expTime.toGMTString();
};

// 擷取某個cookie值
// 返回:cookie值或undefined
Cookie.getCookie = function(name) {
    var rs = document.cookie.match(
        new RegExp("(?:^| )" + escape(name) + "=([^;]*)(?:;|$)", "i")
    );
    return rs ? unescape(r[1]) : undefined;
};

// 刪除某個cookie值
Cookie.deleteCookie = function(name) {
    document.cookie = escape(name) + "=;expires=" + new Date().toGMTString();
};

// 清除全部cookie
Cookie.clearCookie = function() {
    // 擷取到期時間字串
    var expStr = new Date().toGMTString();
    // 擷取當前可訪問cookie中的所有name值
    var rs = document.cookie.match(
        new RegExp("([^ ;][^;]*)(?=(=[^;]*)(;|$))", "gi")
    );
    // 刪除所有cookie
    for (var i in rs)
        document.cookie = rs[i] + "=;expires=" + expStr;
};

Cookie.setSubCookie = function(name, subName, value) {
};

Cookie.getSubCookie = function(name, subName) {
};

Cookie.setFullCookie = function(name, value, expTime, path, domain, secure) {
};

 

其他筆記

 

cookie是一個單例對象。

 

cookie值不能含有分號、逗號或空白符,當有這些特殊字元出現時,可以用JavaScript提供的escape函數先對它進行編碼(unescape解碼)。

 

瀏覽器儲存的cookie總數不能超過300個(注意cookie是單例),為每個Web伺服器儲存的cookie數不能超過20個(突破20:麵包屑技術,通常使用冒號作為子cookie分割符),每個cookie儲存的資料不能超過4KB(解決方案:另一種稍微強的指令碼化資料存放區機制-userData)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.