繁体   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