gpt4 book ai didi

JavaScript:sessionStorage 丢失项目

转载 作者:行者123 更新时间:2023-12-03 06:34:05 27 4
gpt4 key购买 nike

我在 ASP.NET MVC 应用程序的布局页面中有以下 JavaScript 代码,用于将用户的浏览器范围 ID 存储为 cookie,以便我可以访问服务器端 session 中相应用户的信息。

    if (sessionStorage.getItem("TestWindowId") == null) {
sessionStorage.setItem("TestWindowId", "@Guid.NewGuid().ToString("N")");
$.removeCookie("Test_Cookie");
storeWindowIdInBrowserWideCookie();
window.location=document.URL;
}

if ($.cookie("Test_Cookie") !== sessionStorage.getItem("TestWindowId")) {
$.removeCookie("Test_Cookie");
storeWindowIdInBrowserWideCookie();
window.location=document.URL;
}

function storeWindowIdInBrowserWideCookie() {
var cookieValue = sessionStorage.getItem("TestWindowId");
if (cookieValue != null) {
$.cookie("Test_Cookie", cookieValue);
}
}

在大多数情况下,这是有效的。

但在某些随机情况下,对于某些用户来说,sessionStorage.getItem("TestWindowId") 在之前肯定设置的同一浏览器选项卡上返回 null。在这些情况下,我会丢失 ID,并且会丢失与服务器端用户信息的连接。根据我的日志,sessionStorage 项目已设置,并且在同一秒内的回调调用中,同一浏览器选项卡的 sessionStorage 再次为空。

什么会导致客户端的 sessionStorage 丢失项目?

还是我的逻辑有问题?

更新:

我的思维方式有问题。问题不在于 sessionStorage 项被删除,而在于向服务器发送请求时发送了错误的 cookie 值。由于问题不同,我开了另一张票: Store browser window specific id in cookie

最佳答案

根据文档。

sessionStorage 与 Window.localStorage 类似,唯一的区别是 localStorage 中存储的数据没有设置过期时间,而 sessionStorage 中存储的数据会在页面 session 结束时被清除。 页面 session 的持续时间为只要浏览器打开并且在页面重新加载和恢复后仍然存在。 在新标签页中打开页面或关闭窗口将导致 session 存储过期

因此可能会出现客户端关闭浏览器或在新选项卡中打开浏览器的情况。

关于JavaScript:sessionStorage 丢失项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38312784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com