Cookie的一些笔记

Cookie 饼干:即一份数据,由服务器给客户端,且存储在客户端的一份很小的数据

一、为什么会产生Cookie?

  1. 在程序中,不同的客户端会产生许多会话,故而,会话的跟踪就显得尤为重要。理论上,一个客户端的所有操作都应该属于同一个会话,不同用户的操作与会话不能混淆组合。例如,你购物车内添加了一个商品,隔了10天,你又添加了一个商品,那么,这两个商品应该都呆在你的购物车内。其他用户的商品则呆在他们自己的购物车内。这就是会话的跟踪。
  2. 而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的(即数据交互完毕,则会话关闭),这就意味着同样一个用户的操作,不在同属于一个会话。例如,你10天后添加的商品不会跟你10天前添加的商品处在同一个购物车内。
  3. 因此,要跟踪会话,确保会话与操作不至于混乱,就必须引入一种机制去弥补HTTP协议的不足,Cookie就应运而生。

二、常见应用场景

  • 例如:
    1.各种登陆界面二次登陆时候,会记录你的曾经登陆过的账号与密码
    2.各种电商平台中你曾经的浏览记录
    3.购物车内的已添加的商品

三、Cookie如何工作?

  1. 通过前面的笔记,已经了解到,HTTP协议中请求与响应时候,都是带有各自的响应头,体等组团的一堆信息。
  2. cookie则是这堆信息中的一部分
  3. 在Request的时候,浏览器将Cookie信息放在HTTP-Request Headers中。
    在Response的时候,浏览器保存HTTP-Response Headers信息中的Cookie信息。

其实就是每个客户端通过cookie来给自己设定一个唯一代表自己的标识,以此达到不同会话中不至于混淆

四、Cookie的特点

  • 存储特点
    1. 存储大小,条数受限,跟浏览器版本有关
    2. 字符编码为Unicode,不支持直接存储中文
    3. 可靠性差,容易被查看,且可能会因为各种原因被删除
    4. 几个重要的存储信息:Name、Value、过期时间,域名,路径
    5. 不可跨域名,同域名下共享一份Cookie,但是不同域名间不能共享(可以通过Domain、Path设置访问权限)
    浏览器版本Cookie的数量限制Cookie的总大小限制
    IE620个/每个域名4095个字节
    IE750个/每个域名4095个字节
    IE850个/每个域名4095个字节
    IE950个/每个域名4095个字节
    Chrome50个/每个域名大于80000
    FireFox50个/每个域名4097个字节
  • 传输特点
    1. 每次Request客户端符合domian以及path要求的Cookie都会通过Request Headers传输到服务器端
    2. 传输的Cookie大小会受到浏览器以及Web服务器的限制
  • 安全特点
    1. Cookie中的信息很容易被查看,建议加密后存储
    2. Cookie容易被XSS攻击利用,可以设置HttpOnly=true,不允许客户端访问(99.9%的浏览器有效)
    3. cookie可能被用户删除

五、使用建议

  1. 不要保存未经加密敏感信息(安全性)
  2. 如果不需要在客户端访问,设置HttpOnly=true(安全性)
  3. 设置合理的过期时间(传输效率)
  4. 不要存储过大的内容(传输效率)不要存储过大的内容(传输效率)
  5. 不要存储过多的条目(传输效率)不要存储过多的条目(传输效率)
  6. 设置合理的domian、path,减少不必要的Cookie传输(传输效率)设置合理的domian、path,减少不必要的Cookie传输(传输效率)
  7. 不要存储非Unicode字符(可用性)不要存储非Unicode字符(可用性)
  8. 不要存储不可恢复的信息(可靠性)不要存储不可恢复的信息(可靠性)

六、参考的文章

  1. https://blog.csdn.net/u010622874/article/details/80167623
  2. https://blog.csdn.net/gaoyong_stone/article/details/79524321
    (其中包含Cookie存储信息如何加密的几种参考方式)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值