cookie的設定

JinsongChai發表於2018-05-23

cookie

是什麼:是一種用來在客戶端硬碟上儲存資訊的手段。

為什麼用?:可以用來儲存一些資訊,實現一些特殊的效果。例如實現多少天內免登陸,或者儲存一些小資料。

cookie中的一些欄位含義:

  1. key=value(鍵=值) 就是 cookie的一個鍵值對,一般是根據key拿到對應的value
  2. expires(過期時間)設定該cookie的過期時間,也是用 ';' 來隔開,expires=GMT的時間字串,例如要30天免登陸,就可以設定過期時間為今天開始的30天之後的日期。如果不設定過期時間,預設瀏覽器關閉該cookie就消失了。
  3. path(路徑) cookie並不是在哪裡都能夠獲取到的。在網站中分為很多目錄,可能很多目錄中不需要使用到cookie,所以可以設定cookie的路徑,這樣更加安全,避免任意目錄都能訪問到該cookie。通過 path=/E:javascript/test 這樣只能在該目錄下才能獲取到該cookie
  4. domain(域)預設該cookie在該cookie所在域名下才能夠訪問到,但是有時候a.chaijinsong.com需要訪問b.chaijinsong.com下的cookie,這時候就需要設定domain=chaijinsong.com。這樣兩個子域名都可以訪問該cookie
  5. secure(安全性) 預設secure是為false的,即通過http協議來傳輸,但是如果 secure=true 的話,就只能t通過https來進行傳輸
怎麼用?:
document.cookie; //獲取cookie
"aaa=aaa;bbb=bbb" //類似於這種格式,但是並不是字串。

//設定cookie,也可以用來進行刪除cookie,即將過期時間設定為過去的時間,最後一個引數可以傳負數來實現
function setCookie(cname,cvalue,exdays){
  var d = new Date();
  d.setTime(d.getTime()+(exdays*24*60*60*1000));
  var expires = "expires="+d.toGMTString();
  document.cookie = cname + "=" + cvalue + "; " + expires;
}

setCookie('cjs','cjs',30); //設定 name為cjs,value為cjs的一個cookie,並且時間為30天。
setCookie('cjs','cjs',-1); //讓該cookie過期,然後在document.cookie中就沒有cjs=cjs這個cookie了。但是其他key=value還存在

//獲取某個key的cookie
function getCookie(key){
    let arr1 = document.cookie.split(';');
    for(let i=0;i<arr1.length;i++){
        let arr2 = arr1[i].split('=');
        if(key.trim() === arr2[0].trim()){
            return (arr2[1]);
        }
    }
    return "";
}

getCookie('cjs'); //因為上面已經將cjs這個cookie幹掉了,所以這裡得到為 ""

注意:在google瀏覽器上本地html檔案開啟直接給cookie賦值是不允許的,但是firefox可以。所以想要測試的話先在本地開伺服器,讓後使用本地ip訪問該檔案。進行cookie的操作。

我的文章都會在gitbook上找到,覺得不錯的的可以看一下。順便給個star,哈哈!

相關文章