我制作了一个Web应用程序,将持久性用户数据存储在localStorage
中。我已经在自己的网站上启用了HTTPS,我真的很想在HSTS上进行切换。但是,据我所知,localStorage
认为http://example.com和https://example.com是不同的,因此,如果现有用户重定向到我网站的HTTPS版本,他们将无法再访问其数据(尽管它仍然存在)。
长期来看,我想构建此应用程序的新版本,以提供更多数据存储选项。但是从短期来看,我能想到的是过渡期,要求使用http版本的用户通过其他两个版本都可以访问的(未知)机制迁移数据。
这是对我的选择的公正评估吗? https://example.com是否可以访问http://example.com的localStorage
?如果没有,我可以在任何地方放置用户数据,以便两个版本都可以访问它,而其他站点则不能?还是我应该请他们下载数据并重新上传?从UX或(用户)安全 Angular 来看,这并不理想。
请注意,此Web应用程序根本不与服务器交互;一切都与localStorage
和客户端一起发生。
最佳答案
不幸的是,似乎没有任何方法可以直接从https站点检索不太安全的站点http副本的localStorage内容。 reference
我看到的解决方法是使用iframe在不安全的网站上加载类似于this answer的特殊页面。一般理论是在iframe中使用代码,该代码使用postMessage
将带有localStorage数据的消息发送回安全页面。
不幸的是,这种方法不允许您完全禁用http
,因为否则,将不会加载iframed的http副本。