浏览器 如何获取当前标签页的ID信息?

问题出现的环境背景及自己尝试过哪些方法

问题背景

同一个浏览器登录多个账户,刷新各自的标签页,能实现彼此不受影响。

思考的方案

A 如果能得到当前标签的某个类似ID的唯一信息,那么就可以在刷新的时候通过这个唯一信息建立的索引来获取当前标签页的缓存信息。(最佳)

B 通过监听刷新事件,临时存储在一个公共信息。这样可以保证在单次只刷新一个页面的情况下,不会受另外标签页的缓存信息影响。(应急方案)

最终方案分享

  1. sessionStorage作为暂存标签ID的地方,来获取对应关键信息的索引。
  2. token这些还是会通过这个ID为索引存储在cookie,或者localStorage。

有人肯定会有疑惑,从安全角度考虑token不是存在sessionStorage里面更好?并且这种支持多账户登录,也不能支持缓存登录了……

然后我发现其实还是可以支持缓存登录的,只需在登录页面增加一个快速登录入口,对于本地多缓存账户提供一个选择登录即可。

阅读 10.5k
3 个回答

可以把登录信息保存在SessionStorage里面,不过这只能实现同一个浏览器,不同窗口登录不同的用户

最简单粗暴的方法:把 ID 直接保存于 URL

刷新页面的时候,虽然是同一个地址,但是仍然可以保存不同用户的参数,还可以保存为浏览器书签。

  • 可以这样:http://xxxx.com/xxxx#myid
  • 或者这样:http://xxxx.com/xxxx?id=myid
  • 甚至这样:http://xxxx.com/xxxx#myid?id=myid

使用 JavaScript 中的 window.location.search 或者 window.location.hash 读取 myid。接着以 myid 作为关键字,去本地数据库中读取相应的用户数据。

同一个浏览器 同一个域名Session cookie是共享的 重复登录会覆盖包括Storage也一样
这时候就需要前端自己备份 不能让浏览器自动携带了
登录后 前端手动存一下cookie 每次请求后台 用自己存的cookie去请求
还有一步就是监听刷新事件 刷新的时候自己存的cookie 改一下一下浏览器cookie
尝试一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏