从浏览器中的客户端代码,有没有办法只为单个浏览器会话保留某些数据? (生命周期与会话 cookie 相同)

问题描述 投票:0回答:1

目前我将客户端的令牌保存在 HttpOnly cookie 中,但我正在考虑使用授权标头而不是 cookie 来向服务器提供证书。因为一些架构问题使我无法使用 cookie。

但我希望在浏览器窗口关闭后始终删除令牌。这意味着令牌将具有与“会话 cookie”相同的生命周期。

所以我想我可以使用客户端代码中的 cookie 仅存储令牌或任何指示。但由于 cookie 通常是用于服务器的,并且要发送到服务器,这让我想知道这是否是一个不好的做法。

我想我可以使用“onunload”事件回调来删除本地存储中的令牌。但如果客户的计算机突然关闭怎么办?

所以我的问题是,有没有比使用cookie更好的方法?或者我可以用这种方式(使用cookie来存储令牌或相关指示但不发送到服务器)?

cookies browser local-storage session-cookies
1个回答
0
投票

我想我可以使用“onunload”事件回调来删除本地存储中的令牌。但如果客户的计算机突然关闭怎么办?

如果这对您来说足够了,您可以简单地将令牌保存在变量中。

const token = 'some-token';

当页面关闭/重新加载/等时它就会消失。

或者,我认为你真正想要的是 SessionStorage:

https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

只读 sessionStorage 属性访问当前源的会话存储对象。 sessionStorage与localStorage类似;不同之处在于,localStorage 中的数据不会过期,而 sessionStorage 中的数据会在页面会话结束时被清除。

© www.soinside.com 2019 - 2024. All rights reserved.