阅读笔记:sessionStorage可以在多个标签页之间共享数据吗

原文:Interviewer: Can sessionStorage Share Data Between Multiple Tabs?

session

session会话就是用户与服务端之间的一系列http请求和响应

localStorage和sessionStorage之间的区别

  1. localStorage里是数据会永久保存,只要没有被主动删除
  2. 关闭标签页或窗口就意味着结束会话,sessionStorage里的数据会被清除

存储在localStorage里的数据

  • 可以在同一域名的不同标签下共享
  • 不同域名之间不能共享
  • 不同浏览器之间当然也不能共享

MDN中,sessionStorage的定义如下:

  • 标签页的session只对特定的标签页有效
  • sesion的有效期:只要页面/标签未关闭,session就存在,就算页面刷新或重载session也会存在
  • 当新开一个浏览器标签页时,浏览器会根据顶级浏览器上下文新建一个新会话。
  • 对同样的路径新开多个窗口或标签,每一个窗口/标签的session都是独立的
  • 复制标签页会将标签页的session复制到新标签
  • 关闭标签页或窗口,session会话结束,sessionStorage清空
  • 对同一个url使用不同协议打开,session也不同

所以原生的sessionStorage并不能在标签页之间共享数据。
但是注意第5点:复制标签页会将标签页的session复制到新标签
当新页面是通过window.openlink打开时,新的页面会复制前一个页面的sessionStorage。
所以SessionStorage在上述情况中是可以在标签之间共享数据的。

同时stackoverflow中给出了一个解决方案:browser sessionStorage. share between tabs?

cookies

  • 当浏览器访问请求服务,服务器创建一个cookie并随着响应(一般放在响应头里)返回给浏览器
  • 浏览器每次访问服务器时,都会将对应的cookie随着请求发送给浏览器(一般放在请求头里)
  • 浏览器一共可以存大约300个cookie,其中每个网址大概能存20个cookie

cookie的存储周期:

  • 由set-cookie时设定
  • 同样的域名可以共享cookie

所以cookies是客户端和服务端之间用来明确客户身份的,而sessionStorage和localStorage是用来在浏览器中存储客户身份的,是客户和客户端之间的

参考:

Sharing sessionStorage between tabs

browser sessionStorage. share between tabs?

Window: sessionStorage property

What are session cookies? Do they need consent?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值