【发布时间】:2017-07-14 02:49:13
【问题描述】:
我有两个网站http://www.example.com 和https://www.example.com。我正在使用 HTML5 会话存储来存储用户首选项。 用户到达http://www.example.com,我通过 ajax 加载了一些默认设置。 他们浏览到需要登录的页面并被发送到https://www.example.com/login.html 在他们完成登录后,他们将被发送回http://www.example.com,因为他们现在已经登录,我应该从服务器获取新设置。问题是http和https是不同的来源,不能共享会话存储。
我尝试过但不起作用的方法: 在只运行 sessionStorage.removeItem('key') 的 iframe 中加载页面 http://www.example.com/clearSession.html 以清除我的数据,但它似乎有它自己的浏览上下文,所以它不起作用。
我尝试过但不想使用的东西: 使用 cookie。这很好用,因为 http 和 https 可以共享 cookie,但这意味着我的所有用户设置都会随每个资源请求一起发送到服务器。这通常约为 4k,但可能高达 1MB 的数据。不,我不能在不同的域上托管我的资源。
不要缓存设置,每次都发出请求来获取设置。我在较旧的浏览器上执行此操作,因为它们不支持会话存储,但它会减慢页面加载并给我的数据库增加额外的负载。
【问题讨论】:
-
为什么在他们登录之前需要加载默认设置?为什么不假设不存在适用默认设置的设置?
-
这主要是关于确定我是否登录并在他们注销时能够清除设置。
标签: html cross-domain session-storage