cookie使用要点

存储类型

他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。

浏览器允许每个域名所包含的cookie数:

IE6-最大限制20条,IE7+允许每个域名50个cookie。Firefox每个域名cookie限制为50个。Opera每个域名cookie限制为30个。Safari/WebKit和chrome没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
且所有浏览器限制每个cookie长度不能超过4KB,否则会被截掉。
所以:现代浏览器cookie个数不要超过50条,大小不能超过4KB。

安全性问题

客服端每次访问服务端都会携带cookie,cookie容易被人拦截,所有的session信息被公开。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。所以:cookie不要保存机密信息,让服务端来确保用户信息安全。

使用场景

cookie每次随HTTP请求一起发送,浪费宽带,移动端推荐使用localStorage。

关于cookie的编码

原来的cookie编码大多使用escape和unescape进行编解码,这个编解码针对普通字母和数字以及*,+,-,.,/,@,_以外的其他字符,可以说是比较简单粗暴的。后来ECMAScript v3(即ES3)已从标准中删除了escape进行编码,分解成了encodeURI(针对URL风格进行编码)和 encodeURIComponent(针对URL风格编码加上URI 组件的标点符号进行编码,比encodeURI要编码的字符更多)。一般来说cookie编码只需要能对"="和";"进行编码即可。
所以在不能使用escape的情况下使用encodeURIComponent编码,decodeURIComponent解码。

生命周期

如果不设置过期时间,那么cookie存储在内存里,如果通过cookie.setMaxAge(num)设置了过期时间,那么浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie依然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存的cookie,不同的浏览器有不同的处理方式;
cookie.setmaxage设置为0时,会马上在浏览器上删除指定的cookie,
cookie.setmaxage设置为-1时,代表关闭当前浏览器即失效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是 Cookie “cookie 是存储于访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就...
    恩德_b0c2阅读 431评论 0 3
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,837评论 18 139
  • 我们主要关注的是cookie的特性,以及如何使用。所以,先不讲枯燥的理论知识,相信这些理论大家从网上随随便便就能找...
    绚烂的烟火阅读 3,123评论 0 3
  • 越过大漠,是繁华的都城,空着去的骆驼最后总是满载而归。而这一来一去的差价,是小商人谋生的利润。 靠...
    繁花衍清秋阅读 510评论 0 0
  • 作为一个网瘾少女,不得不说网络世界是很迷人的,那些寻常视野里景色,通过移动设备的记录带了人的主观色彩,每个人拍的照...
    第二个甜筒阅读 1,666评论 17 55