【问题标题】:Clear html5 sessionStorage across http/https通过 http/https 清除 html5 sessionStorage
【发布时间】:2017-07-14 02:49:13
【问题描述】:

我有两个网站http://www.example.comhttps://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


【解决方案1】:

我可以告诉你我们是如何解决这个问题的,但它不涉及本地 sessionStorage。在用户访问我们的身份验证服务器并返回后,我们使用服务器端会话来存储用户的登录数据(用户名、ID 等)。在它们通过身份验证之前,您仍然可以通过使用 AJAX 将这些首选项报告回服务器上的 Web 服务,该 Web 服务可以将其存储在服务器的会话范围中,从而从它们那里收集首选项数据。然而,这会破坏 RESTful 模型,因为它会假设使用服务器端会话。这取决于您的服务器语言以及您如何设置网络服务。

我认为您总是会遇到该来源问题,因为通常这是针对本地存储设计的限制。

【讨论】:

  • 在服务器端存储所有内容的问题是我需要请求它,并且我正在尝试构建一个丰富的应用程序,而对我正在构建应用程序的页面没有任何控制。
【解决方案2】:

将所有内容都切换到 https,它现在是一个标准。

【讨论】:

  • 这没用。我连接的软件不支持 https。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 2012-03-06
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多