1. 程式人生 > >cookie的用法,cookie的封裝

cookie的用法,cookie的封裝

cookie的概念
指某些網站為了辨別使用者身份,進行session(會話)跟蹤而儲存在使用者本地終端上的資料(通常經過加密)。以文字形式存在。
谷歌瀏覽器儲存地址: C:\Users\使用者名稱\AppData\Local\Google\Chrome\User Data\Default\資料夾下的Cookies檔案。
注:cookie 只有在伺服器環境下才有用

禁用cookie:改變瀏覽器的cookie設定。如果瀏覽器完全禁止cookie功能的話,大多數網站的基本功能無法正常使用。
cookie的特點
1:chrome和safari沒有對cookie的個數做限制,一般瀏覽器限制同一域名數量為50個。
2:cookie檔案的總大小一般為4KB(同一個域名)。
3:只能使用文字檔案。
4:讀取有域名限制。 域名

www.baidu.com www.taobao.com so.com
不可跨域讀取,只能由來自 寫入cookie的 同一域名 的網頁可進行讀取。 簡單的講就是,誰寫的cookie,誰才有權利讀取 (身份牌是我發你的,當然只有我能讀取,你媳婦兒的手機自動連線了鄰居老王家的wifi,你知道這意味著什麼嗎?)
5:時效限制。
每個cookie都有時效,最短的有效期是,會話級別:就是當瀏覽器關閉,那麼cookie立即銷燬。

cookie的使用

cookie的使用

新增cookie:document.cookie = “key=value”; // 一次寫入一個鍵值對
document.cookie = 'test1=hello';
document.cookie = 'test2=world';
//在瀏覽器中檢視一下現在的cookie是什麼樣子   開啟控制檯 點選application 就能看到cookies
//注意 document.cookie一次只能寫入一個 Cookie,而且寫入並不是覆蓋,而是新增

讀取cookie:document.cookie;

document.cookie // "test1=hello; test2=world"
上面程式碼從document.cookie一次性讀出兩個 Cookie,它們之間使用 分號空格 分隔。必須手動還原,才能取出每一個 Cookie 的值。

var cookies = document.cookie.split('; ');

for (var i = 0; i < cookies.length; i++) { 
      console.log(cookies[i]);
}
// foo=bar// baz=bar

修改cookie:document.cookie = “key=value”;  // 修改名為key的cookie值

document.cookie = 'test2=hah';
document.cookie // "test1=hello; test2=hah"

上面程式碼修改了test2對應的值

失效時間:expires ,沒有設定失效時間的cookie 在瀏覽器關閉以後就會自動刪除,如果設定了失效時候在未來的時間,就可以讓cookie儲存的時間長一點
設定失效時間:document.cookie = “key=value;expires=”+ oDate;

var oDate = new Date();
oDate.setDate(oDate.getDate() + 7);
document.cookie = “key=value;expires=”+ oDate;
//上面程式碼設定cookie的過期時間為7天以後

刪除cookie:將cookie值覆蓋為空,並將失效時間設定為過去的時間。

var oDate = new Date();
oDate.setDate(oDate.getDate() -7);
document.cookie = “test=;expires=”+ oDate;
//將cookie的過期時間設定為 7天前,test 這個cookie 就獲取不到

重點來了呦!

cookie的封裝

function setCookie(name,value,n){
	var oDate = new Date();
	oDate.setDate(oDate.getDate()+n);
	document.cookie = name+"="+value+";expires="+oDate;
}

function getCookie(name){
	var str = document.cookie;
	var arr = str.split("; ");
	for(var i = 0; i < arr.length; i++){
		//console.log(arr[i]);
		var newArr = arr[i].split("=");
		if(newArr[0]==name){
			return newArr[1];
		}
	}
}

function removeCookie(name){
	setCookie(name,1,-1);
}