cookie详解

一、 什么是cookie

A cookie is a small stub of information left by a website on a visitor's computer through the web browser.

HTTP cookie,通常称为cookie,用于在客户端存储会话信息。

二、 cookie的构成

一般有以下几部分组成

set cookie: name=value; domain=.mozilla.org; expires=Feb, 13-Mar-2018 11:47:50; path=/; secure

  1. 名称:一个唯一确定cookie的名称,部分大小写,cookie的名字必须是经过URL编码的,一般可以采用某个前缀在加上当前时间的做法,这样的话名称能够确保是唯一的,也比较方便。

  2. 值:存储在cookie中的字符串值,必须经过被URL编码

  3. 域:对于哪个域是有效的,如果没有设置的话,默认来自设置cookie的那个域,在上诉例子中就是.Mozilla.org

  4. 失效时间:表示cookie何时应该被删除的时间戳,这个日期是GMT格式的日期,如果设置是以前的时间,cookie会被立刻删除。上诉cookie的失效时间是Feb,13-Mar-2018 11:47:50。

  5. 路径:指定域中的那个路径,应该想服务器发送cookie,/ 表示没有限制
    安全标志:指定以后,cookie只有在使用SSL连接的时候才可以发送到服务器。

三、cookie常见操作

1. cookie的建立

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。
调用的方式可以如下:

setCookie("my","hello world","January 1,2017");

2.cookie的查询

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值提取出来。

3.cookie的删除

function deCookie(name,value,expiredate,domain,path,secure){
this.setCookie(name,"",new Date(0),domain,path,secure);
}
重新定义cookie,把时间调为过去,原先的cookie就会失效,value也被设置为空值,这样就可以删除一个cookie。

四、 cookie的应用

  1. 购物车(网购)

  2. 自动登录(登录账号时的自动登录)

  3. 精准广告
    平常浏览网页时有时会推出商品刚好是你最近浏览过,买过的类似东西,这些是通过cookie记录的。

  4. 记住登录状态

五、cookie优点

  1. 通过良好的编程,控制保存在cookie中的session对象的大小。

  2. 通过加密和安全传输技术(SSL),减少cookie被破解的可能性。

  3. 只在cookie中存放不敏感数据,即使被盗也不会有重大损失。

  4. 控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。、

  5. 不需要服务器资源,直接存储在本地。

六、cookie缺点

1. 每个域的cookie总数是有限的,不同浏览器之间各有不同。

  1. IE6以及更低版本限制每个域名最多20个cookie

  2. IE7之后的版本每个域名最多50个。

  3. Firefox限制每个与最多50个cookie

  4. Safari和Chrome对于每个域的cookie数量限制没有硬性规定。

2.cookie的清理

IE和Opera会删除最近最少使用过的cookie,但是Firefox是随机决定要清除哪个cookie。

3. cookie大小的限制

大多数浏览器4096B的长度限制,为了兼容多种浏览器,最好将长度限制在4095B以内.
每个domain最多只能有20条cookie。

4. 安全性

Cookie文件中可能含有涉密信息,可能会导致信息泄露。
Cookie可以被改写,欺骗服务程序或者搜集资料从事非法活动。

七、参考资料

  1. Document.cookie

  2. 《JavaScript高级程序设计》Nicholas C.Zakas著 李松峰 曹力译

关键字:JavaScript, cookie

版权声明

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部