版权声明:内容多为自言自语,请自行判断有无价值。 https://blog.csdn.net/weixin_41702247/article/details/83653818
一. cookie与session
存在的原因:
- http是无状态的协议,客户端每次发送请求都会重新验证身份
- 为了在一次会话中便于验证客户端身份,服务端采取了cookie机制
- 实现方法是服务器返回Set-Cookie的HTTP头信息并由客户端保存,之后客户端每次发送请求都会带上cookie作为自己的身份证明
相同点:都可以用来跟踪会话,实现客户端的身份整明
不同点:
- cookie存储在客户端,session存储在服务端
- cookie在客户端有数量(20-50/域)和长度(4kb)限制,session受限于硬件
- cookie存储在客户端可被篡改有安全问题,session存储在服务端无法被客户端修改
- cookie的生命周期可控,session的生命周期
关联:
- session运行依赖于session id,这个id会被客户端存储在cookie中
- 如果客户端禁用cookie,则session也一样会失效,解决办法是URL重写(url地址后加上如sid=xxxx这样的参数证明身份)
参考:
https://www.zhihu.com/question/19786827
https://www.jianshu.com/p/f5ce60f12e9f
二、sessionStorage、globalStorage与localStorage
Web Storage的作用:
- 提供一种在cookie之外存储会话数据的途径
- 存储大量 可以跨会话的数据(大小因浏览器而不同,2-10Mb)
- Storage一种类型,也是object,有特定的方法
sessionStorage:
存储特定于某个会话的数据,直到浏览器关闭,有同步写入和异步写入的区别
globalStorage:
存储跨会话数据,应对其指定可访问的域名,不清除则一直存在
localStorage:
在html5中取代了globalStorage,区别在于localStorage无法指定访问规则,只能由同一个域名访问存储对象
三、IndexDB
定义:在浏览器中保存结构化数据的一种数据库
原因:开发者需要在本地进行永久存储
特点:使用对象保存数据,而非表