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著 李松峰 曹力译