- 生命周期
- cookie
- 如果有设置max-age,该文件只要没有超过该时间,用户没有手动删除,或者不通过js的api方法删除,就永不销毁
- 如果没有设置max-age,该cookie就是会话级cookie,浏览器关闭,标签页关闭都会导致cookie被销毁
- localStorage
- 除非用户手动删除,或者通过js的api方法删除,否则永不销毁(持久化存储)
- sessionStorage
- 浏览器关闭,标签页关闭都会导致sessionStorage被销毁
- cookie
- 存储位置
- cookie
- 如果有设置max-age,存储于硬盘中
- 如果没有设置max-age,存储于内存中
- localStorage
- 硬盘
- sessionStorage
- 内存
- cookie
- 存储大小
- cookie ->
4KB
- localStorage ->
5MB
,在IE上,3MB左右 - sessionStorage ->
5MB
- cookie ->
- 与服务器之间的关系
- cookie(他是被借用的本地存储)
- 服务器创建,浏览器存储
- 服务器通过在响应头中,添加属性Set-Cookie来传递cookie数据
- 浏览器通过在请求头中,添加属性Cookie来向服务器传递cookie数据
- localStorage
- 他是浏览器的本地存储,与服务器不熟
- sessionStorage
- 他是浏览器的本地存储,与服务器不熟
- cookie(他是被借用的本地存储)
- cookie的特点:
- 浏览器会自动发送和存储cookie,不需要前端操心
- 每个请求都会发送cookie
- cookie使用约束限制很大
- 用户可以禁用cookie,很可能导致某些功能失效
- 服务器可以控制浏览器对cookie的读写操作
- 通过httpOnly可以控制前端能否看到该cookie
- 通过domain属性可以控制当前cookie的作用域名范围
- cookie安全性不好
- 浏览器会自动发送和存储cookie,不需要前端操心
- token和以上三者有什么关系
- token本质只是一个字符串
- token是服务器将用户唯一标识加密之后得到的乱码字符串
- 与上述三者最大的关系,就是token经常被存入到以上三种技术中
- 如何跨标签页(页面)通信?
- 方案一:使用localStorage
- 注意:localStorage只能够在相同域名情况下,跨页面通信
- 流程:
- 在B页面中,可以给window添加事件监听:storage监视当前localStorage的变化
- 在A页面中,使用localStorage.setItem添加key值,B页面就会触发事件监听回调函数
- 方案二:使用网页的domain属性
- 流程:
- 在A页面中,修改A页面的document.domain为两个页面共同的顶级域名
- 使用window.open方法,打开全新的页面,同时接受window.open的返回值(这个返回值是新开页面的window对象)
- 在B页面中,修改B页面的document.domain为两个页面共同的顶级域名
- 在B页面中,声明全局变量,存入需要传递的数据
- 在A页面,通过步骤2中获取的window对象,直接读取B页面数据
- 流程:
- 方案一:使用localStorage
区分localStorage,sessionStorage和cookie
最新推荐文章于 2024-11-02 15:22:06 发布