A cookie is a small stub of information left by a website on a visitor's computer through the web browser.javascript
HTTP cookie,一般稱爲cookie,用於在客戶端存儲會話信息。java
通常有如下幾部分組成web
set cookie: name=value; domain=.mozilla.org; expires=Feb, 13-Mar-2018 11:47:50; path=/; secure編程
名稱:一個惟一肯定cookie的名稱,部分大小寫,cookie的名字必須是通過URL編碼的,通常能夠採用某個前綴在加上當前時間的作法,這樣的話名稱可以確保是惟一的,也比較方便。瀏覽器
值:存儲在cookie中的字符串值,必須通過被URL編碼安全
域:對於哪一個域是有效的,若是沒有設置的話,默認來自設置cookie的那個域,在上訴例子中就是.Mozilla.org服務器
失效時間:表示cookie什麼時候應該被刪除的時間戳,這個日期是GMT格式的日期,若是設置是之前的時間,cookie會被馬上刪除。上訴cookie的失效時間是Feb,13-Mar-2018 11:47:50。cookie
路徑:指定域中的那個路徑,應該想服務器發送cookie,/ 表示沒有限制
安全標誌:指定之後,cookie只有在使用SSL鏈接的時候才能夠發送到服務器。session
function setCookie(name,value,expiredate,domain,path,secure){ var cookieText=escape(name)+"="+escape(value); if(expiredate){ var exdate=new Date(); exdate.setDate(exdate.getDate()+expiredate); cookieText+=";expires="+exdate.toGMTString(); } if(domain){ cookieText+=";domain="+domain; } if(path){ cookieText+=";path="+path; } if(secure){ cookieText+=";secure"; } document.cookie=cookieText; }
把這六個參數傳入進去,或者傳入幾個參數就能夠了,必須傳入的參數爲name和value。
調用的方式能夠以下:dom
setCookie("my","hello world","January 1,2017");
function getCookie(name){ var cookieName=encodeURIComponent(name)+"=", cookieStart=document.cookie.indexOf(cookieName), cookieValue=null; if(cookieStart>-1){ var cookieEnd=document.cookie.indexOf(";",cookieStart); if(cookieEnd==-1){ cookieEnd=document.cookie.Length; } cookieValue=decodeURIComponent(document.cookie.substring(cookieStart+document.cookie.length,cookieEnd)); } return cookieValue; }
主要的思路是經過找到字符串的開頭和結尾,而後經過substring()函數把value值提取出來。
function deCookie(name,value,expiredate,domain,path,secure){ this.setCookie(name,"",new Date(0),domain,path,secure); }
從新定義cookie,把時間調爲過去,原先的cookie就會失效,value也被設置爲空值,這樣就能夠刪除一個cookie。
購物車(網購)
自動登陸(登陸帳號時的自動登陸)
精準廣告
日常瀏覽網頁時有時會推出商品恰好是你最近瀏覽過,買過的相似東西,這些是經過cookie記錄的。
記住登陸狀態
經過良好的編程,控制保存在cookie中的session對象的大小。
經過加密和安全傳輸技術(SSL),減小cookie被破解的可能性。
只在cookie中存放不敏感數據,即便被盜也不會有重大損失。
控制cookie的生命期,使之不會永遠有效。偷盜者極可能拿到一個過時的cookie。、
不須要服務器資源,直接存儲在本地。
IE6以及更低版本限制每一個域名最多20個cookie
IE7以後的版本每一個域名最多50個。
Firefox限制每一個與最多50個cookie
Safari和Chrome對於每一個域的cookie數量限制沒有硬性規定。
IE和Opera會刪除最近最少使用過的cookie,可是Firefox是隨機決定要清除哪一個cookie。
大多數瀏覽器4096B的長度限制,爲了兼容多種瀏覽器,最好將長度限制在4095B之內.
每一個domain最多隻能有20條cookie。
Cookie文件中可能含有涉密信息,可能會致使信息泄露。
Cookie能夠被改寫,欺騙服務程序或者蒐集資料從事非法活動。
《JavaScript高級程序設計》Nicholas C.Zakas著 李鬆峯 曹力譯