簡體   English   中英

JavaScript:sessionStorage丟失項目

[英]JavaScript: sessionStorage loses item

我在ASP.NET MVC應用程序的“布局”頁面中具有以下JavaScript代碼,以Cookie的形式將用戶的瀏覽器范圍ID存儲為cookie,因此我可以在服務器端的會話中為相應用戶訪問信息。

    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值。 由於問題不同,我打開了另一張票證:將瀏覽器窗口特定的ID存儲在Cookie中

根據文檔。

sessionStorage與Window.localStorage類似,唯一的區別是,存儲在localStorage中的數據沒有設置過期時間,存儲在sessionStorage中的數據在頁面會話結束時被清除。 頁面會話的持續時間只要瀏覽器處於打開狀態,並且在頁面重新加載和還原后仍然存在。 在新標簽頁或關閉窗口中打開頁面將導致會話存儲過期

因此,客戶端可能已關閉瀏覽器或在新選項卡中打開它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM