我有两个网站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是不同的来源,不能共享会话存储。
我试过的东西不起作用:在一个 iframe 中 加载一个页面http://www.example.com/clearSession.html,它只运行 sessionStorage.removeItem('key') 来清除我的数据,但似乎这有它自己的浏览上下文,所以它不起作用。
我尝试过但我不想使用的东西: 使用cookie。这很好用,因为 http 和 https 可以共享 cookie,但这意味着我的所有用户设置都会随每个资源请求一起发送到服务器。这通常约为 4k,但可能高达 1MB 的数据。不,我不能在不同的域上托管我的资源。
不要缓存设置,每次都发出请求以获取设置。我在较旧的浏览器上执行此操作,因为它们不支持会话存储,但它会减慢页面加载并给我的数据库增加额外的负载。