簡體   English   中英

奇怪的sessionStorage行為

[英]Weird sessionStorage behavior

好的,請耐心等待,我會盡量詳細解釋這個問題。

我有3個HTML(和適當的.js)文件。 我可以向sessionStorage添加內容,當我位於任一HTML文件中時,我會顯示sessionStorage的內容。 我在最新版本的firefox上本地運行文件,據我所知 - 在文件中支持sessionStorage://所以,一切都很好,我可以在HTML1中添加東西到sessionStorage並轉到HTML2,數據是顯示得當。 我得到了sessionStorage的概念,一切都很好。

但是這里變得奇怪:當我在HTML1中向sessionStorage添加內容並通過a-href轉到HTML2時,sessionStorage的內容就在那里。 但是,如果我在網址欄中單擊並按Enter鍵,則內容將丟失。 SessionStorage為“null”。 我回到HTML1並按ctrl + r(重新加載)仍然是null。 但是當我點擊url欄然后按回車鍵(當我在HTML1頁面時),sessionStorage內容返回。

我已經完成了幾次檢查,看起來好像當我點擊url欄並按回車鍵時,會創建另一個sessionStorage實例。

但是,如果我在某個服務器上傳項目,則不會發生這種情況。 我想知道為什么 - 如果firefox支持sessionStorage - 當我在本地運行應用程序並且那里真正發生了什么時,會發生這種情況? 謝謝你的任何解釋。

我很確定如果您查看文件系統中的文件,瀏覽器會將每個文件視為域。 所以沒有Ajax,沒有共享cookie,會話等等。我覺得奇怪的是你要保留一些會話......

想象一下,你有一個愚蠢的用戶打開他下載的html文件,沒有這些保護,html文件可以看到系統上的所有內容。 當打開.exe(或等效文件)時,防病毒軟件和操作系統會警告您,打開.html文件時不會收到任何警告。

你必須使用本地服務器,比如WAMP。 或者如果可以的話就是Apache。

好的,它在本地不起作用,因為你打開文件,你需要在服務器上運行它。

瀏覽器會使用URL(當然還有其他內部內容)將會話綁定在一起,這就是為什么它適用於您上傳到的任何服務器。 這不適用於文件URL,因為瀏覽器將它們視為來自不同位置的不同頁面,因此不會共享會話。

如果您在本地設置WAMP或其他東西並通過它運行它,它將工作。 這正是xavierm02建議的。

暫無
暫無

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

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