在不同端口上的本地主机上的2个角度SPA之间共享sessionStorage

时间:2019-01-10 15:15:59

标签: javascript angular localhost local-storage session-storage

我正在运行2个角度应用程序(角度7和角度1.5) 开发人员模式下使用不同的端口。它们被一个接一个地装载。用户从第一个应用程序启动(例如localhost:3000),并在某个时候将用户重定向到第二个应用程序(假设localhost:8080)。 我希望他们共享会话存储。 有可能吗?

1 个答案:

答案 0 :(得分:0)

来自Wikipedia:Web存储提供了两个不同的存储区域(本地存储和会话存储),它们的范围和生存期都不同。放置在本地存储中的数据是按源(按同源策略中定义的协议,主机名和端口号的组合)(该数据可用于从先前存储数据的同一源中的页面加载的所有脚本)和关闭浏览器后仍然存在。 会话存储是按每个窗口或选项卡的来源,并且仅限于窗口的生存期。会话存储旨在允许同一Web应用程序的单独实例在不同的窗口中运行而不会互相干扰,这是cookie不能很好支持的用例。[9]

这意味着,根据设计,会话存储将不允许您访问创建它的窗口之外的数据。我相信,即使是本地存储,也会阻止您从其他端口访问数据。

您可以使用IndexedDB之类的东西从运行在同一台计算机上不同端口上的不同选项卡中的多个不同应用程序获取数据并将其设置为通用数据存储。

对于Angular 7,Cyrille Tuzi的Angular Async Local Storage库已得到很好的开发和支持,很可能使您能够执行所需的工作。您也许可以为Angular 1.x找到类似的库,该库使您可以通过相同的IndexedDb数据存储交换数据。