好的,请耐心等待,我会尽可能详细地解释这个问题。
我有3个超文本标记语言(和适当的.js)文件。我可以将内容添加到sessionStorage中,当我位于这两个sessionStorage文件中的任何一个文件中时,我都会显示该HTML的内容。我在最新版本的火狐上运行文件,据我所知,它支持sessionStorage ://所以,一切都很好,我可以在HTML1的sessionStorage中添加东西,然后转到HTML2,数据就可以正常显示了。我理解了sessionStorage的概念,一切都很好。
但奇怪的是:当我在HTML1中向sessionStorage添加内容并通过a-href转到HTML2时,sessionStorage的内容就在那里。但是,如果我在url栏中单击并按enter,则内容将丢失。SessionStorage为null。我返回到HTML1并按ctrl+r (重新加载),仍然是null。但是,当我在url栏中点击并按回车键(当我在HTML1页面中)时,sessionStorage内容返回。
我已经做了几次检查,似乎当我在url栏中单击并按enter时,又创建了另一个sessionStorage实例。
但是,如果我将项目上传到某个服务器上,则不会发生这种情况。我想知道为什么--如果火狐支持sessionStorage --当我在本地运行应用程序时会发生这种情况,那里到底发生了什么?谢谢你的任何解释。
发布于 2012-12-16 19:25:03
好的,它不能在本地工作,因为你正在打开文件,你需要在服务器上运行它。
浏览器将使用URL (当然还有其他内部内容)将会话绑定在一起,这就是为什么它可以在您上传到的任何服务器上工作。这不适用于文件URL,因为浏览器看起来它们是来自不同位置的不同页面,因此会话不是共享的。
如果你在本地设置WAMP或其他东西并运行它,它将会工作。这正是xavierm02的建议。
发布于 2012-12-16 01:24:22
我敢肯定,如果您查看文件系统中的文件,浏览器会将每个文件视为一个域。所以没有Ajax,没有共享cookie,会话等等。我觉得奇怪的是你可以保留一些会话……
想象一下,你有一个用户愚蠢到打开他下载的html文件,如果没有这些保护,这个html文件可以看到系统上的所有内容。当你打开一个.exe (或类似的文件)时,就像杀毒软件和操作系统警告你一样,当你打开一个.html文件时,你不会得到任何类型的警告。
您必须使用本地服务器,可能类似于WAMP。或者Apache,如果可以的话。
https://stackoverflow.com/questions/13893930
复制相似问题