博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cookie详解
阅读量:6293 次
发布时间:2019-06-22

本文共 2629 字,大约阅读时间需要 8 分钟。

一、 什么是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

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

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

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

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

  • 路径:指定域中的那个路径,应该想服务器发送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的应用

  • 购物车(网购)

  • 自动登录(登录账号时的自动登录)

  • 精准广告

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

  • 记住登录状态

五、cookie优点

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

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

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

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

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

六、cookie缺点

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

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

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

  • Firefox限制每个与最多50个cookie

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

2.cookie的清理

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

3. cookie大小的限制

大多数浏览器4096B的长度限制,为了兼容多种浏览器,最好将长度限制在4095B以内.

每个domain最多只能有20条cookie。

4. 安全性

Cookie文件中可能含有涉密信息,可能会导致信息泄露。

Cookie可以被改写,欺骗服务程序或者搜集资料从事非法活动。

七、参考资料

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

转载地址:http://fhcta.baihongyu.com/

你可能感兴趣的文章
10年重新出发
查看>>
2019年-年终总结
查看>>
聊聊elasticsearch的RoutingService
查看>>
让人抓头的Java并发(一) 轻松认识多线程
查看>>
从源码剖析useState的执行过程
查看>>
地包天如何矫正?
查看>>
中间件
查看>>
Android SharedPreferences
查看>>
css面试题
查看>>
Vue组建通信
查看>>
用CSS画一个带阴影的三角形
查看>>
前端Vue:函数式组件
查看>>
程鑫峰:1.26特朗.普力挺美元力挽狂澜,伦敦金行情分析
查看>>
safari下video标签无法播放视频的问题
查看>>
01 iOS中UISearchBar 如何更改背景颜色,如何去掉两条黑线
查看>>
对象的继承及对象相关内容探究
查看>>
Spring: IOC容器的实现
查看>>
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>