怎麼設置cookie,怎麼設置cookie以及刪除cookie和cookie詳解

在操做cookie以前,先來看一下cookie長什麼樣。

能夠看到,cookie是一個個鍵值對(「鍵=值」的形式)加上分號空格隔開組合而成, 形如: "name1=value1; name2=value2; name3=value3"



設置cookie:
複製代碼
 1 /**
 2      * 設置cookie
 3      * @param name cookie的名稱
 4      * @param value cookie的值
 5      * @param day cookie的過時時間
 6      */
 7     var setCookie = function (name, value, day) {
 8       if(day !== 0){     //當設置的時間等於0時,不設置expires屬性,cookie在瀏覽器關閉後刪除
 9         var expires = day * 24 * 60 * 60 * 1000;
10         var date = new Date(+new Date()+expires);
11         document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString();
12       }else{
13         document.cookie = name + "=" + escape(value);
14       }
15     };
複製代碼
 

注意:expires使用GMT或UTC格式的時間, 我這裏沒有指定路徑(path)和域(domain),  當沒有指定路徑時默認爲當前路徑下,如對 於「https://home.cnblogs.com/u/maderlzp/」下設置的cookie,其path爲"/u/maderlzp", 其domain爲當前域名「home.cnblogs.com」。javascript

爲何有時候刪除不了cookie? 多是由於刪除cookie時沒有指定該cookie的path和domain,致使找不到這個cookie來設置過時時間而沒法刪除。html



獲取cookie:
/**
     * 獲取對應名稱的cookie
     * @param name cookie的名稱
     * @returns {null} 不存在時,返回null
     */
    var getCookie = function (name) {
      var arr;
      var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
      if (arr = document.cookie.match(reg))
        return unescape(arr[2]);
      else
        return null;
    };

  

 
 
 
cookie獲取正則解析:
"(^| )" + name + "=([^;]*)(;|$)"  (^| )匹配cookie開頭或空格(cookie鍵值對之間用分號空格隔開),也就是cookie鍵值對的開始。接着是cookie的名稱name,([^;]*)匹配除分號之外的任意字符,也就是cookie鍵值對的值。最後(;|$)匹配分號或整個cookie的結尾,也就是cooke鍵值對的結尾。

更多正則的語法詳解請參考:

   正則表達式的用法和經常使用實例【1】




刪除cookie:

 

複製代碼
1 /**
2      * 刪除cookie
3      * @param name cookie的名稱
4      */
5     var delCookie = function (name) {
6       setCookie(name, ' ', -1);
7     };
複製代碼

設置要刪除的cookie的expires爲過去的時間便可java

 

 

修改cookie:正則表達式

使用上面設置cookie的方法,從新給要修改的cookie賦值就行,這樣舊的就會被覆蓋掉瀏覽器

 

 

cookie的主要做用:

cookie

Cookie主要用在如下三個方面:dom

  • 會話狀態管理(如用戶登陸狀態、購物車、遊戲分數和其它須要記錄的信息)
  • 個性化設置(如用戶自定義設置、主題等)
  • 瀏覽器行爲跟蹤(如跟蹤分析用戶行爲)

 

 

cookie設置語法:post

 

document.cookie = "cookieName=mader; expires=Fri, 31 Dec 2017 15:59:59 GMT; path=/mydir; domain=cnblogs.com; max-age=3600; secure=true";加密

  •  cookieName=mader :name=value,cookie的名稱和值
  •  expires=Fri, 31 Dec 2017 15:59:59 GMT: expires,cookie過時的日期,若是沒有定義,cookie會在對話結束時過時。日期格式爲 new Date().toUTCString()
  •  path=/mydir: path=path (例如 '/', '/mydir') 若是沒有定義,默認爲當前文檔位置的路徑。
  •  domain=cnblogs.com: 指定域(例如 'example.com', '.example.com' (包括全部子域名), 'subdomain.example.com') 若是沒有定義,默認爲當前文檔位置的路徑的域名部分。
  •  max-age=3600: 文檔被查看後cookie過時時間,單位爲秒
  •  secure=true: cookie只會被https傳輸 ,即加密的https連接傳輸

 

彼岸花開開彼岸, 奈何橋前可奈何。 望鄉臺下忘川水, 三生石邊賣孟婆。 涅槃同魔魔戀相, 浮生若夢夢蹉跎。 惟有餘生舞日月, 白駒過隙大風歌。
相關文章
相關標籤/搜索