- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 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/
我一直在做一些关于 cookie、sessionStorage、localStorage 的研究,但对 $sessionStorage 的了解很少。 在开发者工具中哪里可以查看 $sessionSto
我正在尝试使用 sessionStorage 中的“isCollapse”变量来减少导航栏。通过单击该按钮,我的 sessionStorage 会发生变化,但渲染不会更新。 JSX Code {
我有一个单页 AngularJS 应用程序,并通过 websockets 不使用 cookie 来验证我的网站。这意味着刷新会使用户注销。将密码存储在 sessionStorage 上以便它们可以在
我在 ASP.NET MVC 应用程序的布局页面中有以下 JavaScript 代码,用于将用户的浏览器范围 ID 存储为 cookie,以便我可以访问服务器端 session 中相应用户的信息。
我不明白 sessionStorage 是如何工作的。我希望仅在初始页面加载时发生一个事件。 我(尝试)通过检查 session 是否是新的来做到这一点。想法如下: $(function() {
我有这段JS: $('.go-to-bag').click(function () { var productId = $(this).parent().attr('id'); var product
我有这样的代码: Some Some 1 Some 2 Some 3 Some 4
我有一个 javascript 函数,每当特定 select 发生更改时,就会进行 3 个 ajax Json 调用,并填充 3 个 sessionStorage 项,这些项用于创建动态下拉菜单。 /
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我有包含此函数和代码的 PHP 文件: var values7 = ; var value7 = new Array; var time
这是我的代码: sessionStorage.loggedIn = true; if (sessionStorage.loggedIn) { alert('true')
我想知道如何从我的自定义方法中访问 native sessionStorage 范围。 我的例子: https://jsfiddle.net/3mc7ao7j/1/ 在第 3 行,我希望能够在对数据执
我试图实现这段代码,但在我的控制台中它说 thing is null 这很奇怪,因为当我查看控制台时,sessionStorage 不是空的...... $(".btn-alert").click(f
根据我对 Web 存储的(贫乏)理解,sessionStorage 对象是按选项卡维护的,它在页面重新加载和页面导航后仍然存在,并且在选项卡关闭或浏览器进程终止时被销毁。 有没有办法监听 sessio
我正在使用 sessionStorage 来确保每个 session 只发生一次操作。但是,如果用户打开一个新窗口 - sessionStorage 不会转移到新窗口,并且会再次执行该操作。请参阅下面
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
在我的网络表单上,我使用 sessionStorage HTML5 的功能可以存储表单中的值,然后将它们显示在“谢谢”页面上,作为查询的确认收据。 我已成功存储除 之外的每种输入类型的值。元素。 我
我是 HTML5/Javascript 新手,我认为有一个概念问题。我使用 Aptana 作为我的环境,它使用 FireFox 进行浏览器调试。 这是有问题的代码: var req = new Con
在下面的示例中(在 jsfiddle 中,依赖于 requirejs),控制台第一次输出 theUsername 和 http://nothing&username=null ,然后如果您再次运行它,
Login.vue是我设置sessionStorage的地方 sessionStorage.setItem('accessToken', response.data.response.accessTo
我是一名优秀的程序员,十分优秀!