1.cookie瀏覽器
含義: 存儲在訪問者的計算機中的變量,即存儲在客戶端安全
建立一個cookie服務器
/* getCookie方法判斷document.cookie對象中是否存有cookie,如有則判斷該cookie中是否含有指定c_name的cookie,有則返回數據 沒有則返回空串 */cookie
function getCookie(c_name){ if (document.cookie.length>0){ c_start=document.cookie.indexOf(c_name + "=") // indexOf() 返回指定字符串值在某個字符串中首次出現的位置,若是沒有出現則返回-1 if (c_start!=-1){ c_start=c_start + c_name.length+1 // 0 + 8 + 1 即username= 以後的位置 9 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) // subtring(start,stop)用於提取字符串中介於兩個指定下標的字符 start必填,stop可選 參數都爲非負整數 // unescape() 對 escape() 編碼的字符串進行解碼。 } } return "" }
/* setCookie方法將cookie名稱爲c_name的value值存入document.cookie對象中 */session
function setCookie(c_name,value,expiredays){ var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value) + ((expiredays==null) ? "" : "; expires="+exdate.toGMTString()) //結果爲: username= xxx;expires=xxx; // toGMTString()方法,根據格林威治時間 (GMT) 把 Date 對象轉換爲字符串,並返回結果。 // escape(string) 函數可對字符串進行編碼,就能夠在全部計算機上讀取該字符串。 }
/* checkCookie()方法調用getCookie()判斷document.cookie對象中名稱爲username的cookie是否已經設置,若已經設置則顯示提示框顯示信息,反之調用setCookie()方法設置cookie */函數
function checkCookie(){ username=getCookie('username') if (username!=null && username!=""){alert('歡迎登錄 '+username+'!')} else { username=prompt('輸入用戶名:',"") if (username!=null && username!=""){ setCookie('username',username,365) } } }
附加: 刪除cookie 將expires設置爲過時時間便可 cookie名稱可爲空性能
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";網站
2.sessionui
session依賴於cookie,它存儲在服務器端編碼
session至關於程序在服務器上創建的一份用戶的檔案,用戶來訪的時候只須要查詢用戶檔案表就能夠了。
HTTP協議是無狀態的,session不能依據HTTP鏈接來判斷是否爲同一客戶,所以服務器向客戶端瀏覽器發送一個名爲SESSIONID的cookie,它的值爲該Session的id。Session依據該cookie來識別是否爲同一用戶。
應用場景
3.Cookie和Session區別
一、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上
二、cookie不是很安全,別人能夠分析存放在本地的cookie並進行cookie欺騙,考慮*到安全應當使用session
三、session會在必定時間內保存在服務器上,當訪問增多,會比較佔用你服務器的性能,考慮到減輕服務器性能方面,應當使用cookie
四、單個cookie保存的數據不能超過4K,不少瀏覽器都限制一個站點最多保存20個cookie
五、建議將登陸信息等重要信息存放爲session,其餘信息若是須要保留,能夠放在cookie中
六、session保存在服務器,客戶端不知道其中的信息;cookie保存在客戶端,服務器可以知道其中的信息
七、session中保存的是對象,cookie中保存的是字符串
八、session不能區分路徑,同一個用戶在訪問一個網站期間,全部的session在任何一個地方均可以訪問到,而cookie中若是設置了路徑參數,那麼同一個網站中不一樣路徑下的cookie互相是訪問不到的
4.sessionStorage、localStorage和cookie的區別
共同點:都是保存在瀏覽器端、且同源的 區別: 一、cookie數據始終在同源的http請求中攜帶(即便不須要),即cookie在瀏覽器和服務器間來回傳遞,而sessionStorage和localStorage不會自動把數據發送給服務器,僅在本地保存。cookie數據還有路徑(path)的概念,能夠限制cookie只屬於某個路徑下 二、存儲大小限制也不一樣,cookie數據不能超過4K,同時由於每次http請求都會攜帶cookie、因此cookie只適合保存很小的數據,如會話標識。sessionStorage和localStorage雖然也有存儲大小的限制,但比cookie大得多,能夠達到5M或更大 三、數據有效期不一樣,sessionStorage:僅在當前瀏覽器窗口關閉以前有效;localStorage:始終有效,窗口或瀏覽器關閉也一直保存,所以用做持久數據;cookie:只在設置的cookie過時時間以前有效,即便窗口關閉或瀏覽器關閉 四、做用域不一樣,sessionStorage不在不一樣的瀏覽器窗口中共享,即便是同一個頁面;localstorage在全部同源窗口中都是共享的;cookie也是在全部同源窗口中都是共享的