*会被附加在每次的http请求上,所以增加了流量
*cookie存储在客户端,极有可能会被拦截,存在安全问题
*虽然一定程度上实现了保持状态,但是最大支持4069字节
*每个域名下最多生成了cookie个数有限制
session:
支持更多的字节,并且存储在服务器
缺点:
*保存的东西越多,越占用服务器的资源
*依赖cookie,如果cookie禁用,需要URL重写,不安全
*创建session有很大的随意性,不需要开发者做精确的处理,过度使用session会导致代码可读性变低,不利于维护cookie的使用:
1)服务器发送cookie给客户端(即set-cookie),包括对应的名称,值
2)在脚本JavaScript中设置修改cookie
sessionStorage:将数据保存在session对象(保存浏览器打开页面到关闭页面之间的数据)中,浏览器页面关闭后数据消失、
localStorage:
没有时间限制的存储,将用户的数据保存在客户端本地的硬件设备上,即使网页关闭后,在用户下次访问该网页时数据仍然可以使用
区别:
1)cookie的数据在每次http请求时都会携带(即使不需要),而webStorage不会,仅在本地保存。数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使在不影响网站性能的情况下存储大量数据成为可能。cookie还有path的概念,可以将数据限制在某个路径下
2)因为每次请求都会携带cookie所以cookie不会过大(<4K),
3)作用域:cookie和localStorage在同源页面共享数据,而sessionStorage只在同一个浏览器中共享,同一个页面也不行
4)使用:cookie需要自己封装getCookie/getCookie而webStorage可以使用原生API 创建并访问localStorage:
创建并访问sessionStorage: