如何防止在部署在同一容器中的两个或多个不同应用程序之间传递HTML5本地存储数据
How to prevent passing HTML5 local storage data between two or more different applications which were deployed at the same container?
我在用户会话监控方面有很大的问题。我需要在关闭最后一个应用程序选项卡或浏览器关闭后终止会话。
因此,这项工作得以实施。我开发了用于本地存储和会话存储的小型库,并开发了用于监视打开的浏览器选项卡的机制。
只是一个带有制表符计数器的简单对象。
{
"session_instance_count" : 0
}
以及将此对象写入本地存储的简单方法:
SessionMonitor.prototype.writeValueByKeyToLS = function (key, value){
var own = this;
own.getLocalStorageInstance().setItem(key, value);
};
SessionMonitor.prototype.getLocalStorageInstance = function () {
return 'localStorage' in window && window['localStorage'];
};
但是在将另一个应用程序部署到Tomcat之后,我发现本地存储存在严重问题。来自第一个应用程序的所有存储值在第二个应用程序中都可用。
我在上存储了一些数据http://localhost:8080/app1该数据将在http://localhost:8080/app2
App1发送请求打开带有一些参数的App2
注意:我无权修改第二个应用程序的源代码。
这是我的问题:
如何防止在部署在同一容器中的两个或多个不同应用程序之间传递HTML5本地存储数据?
删除了具有本地存储的解决方案,因为它不提供在具有相同域模式的一个容器内的应用程序之间单独设置数据的可能性。我已经检查了tomcat/conf/server.xml中配置端口的解决方案因此,我们可以为所有部署的应用程序设置不同的端口。或者我们可以为应用程序再注册一个端口
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8086" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8444" />
http://localhost:8080/app2具有http://localhost:8086/app1
本地存储将是唯一的。但我不能使用这个解决方案,因为客户不希望这样。
我找到了另一个解决方案:服务器端和客户端之间的关系。
只是生成唯一的window.name并将其存储在服务器会话中。我希望这对某些人会有帮助。
相关文章:
- 什么'在Express中路由时,应用程序级中间件和路由器级中间件之间的区别是什么
- 我如何知道js文件之间的javascript应用程序代码流
- 通过共享服务在两个不同ng应用程序中的控制器之间共享数据
- 如何在Windows Phone 8.1应用程序中在C#和Javascript之间传递数据或通信
- 谷歌应用程序在两个标签之间编写目标文本
- 节点中的端点与快速应用程序.js之间的冲突
- 多个应用程序之间的通信
- 如何在同一页面上的Angular应用程序和非Angular应用软件之间进行通信
- 带有webkit和PhoneGap的iPhone原生应用程序之间的差异
- 如何启用ionic应用程序和浏览器之间的通信
- 网络应用程序:模块之间相互交流
- 在不同端口上运行时,rest api应用程序服务器(express)和Angulars js应用程序之间的Cors问题
- Angular 模板缓存是否在应用程序之间共享?是不是坚持不懈
- 如何在 AIR Android 应用程序中在 JS 和 AS3 之间进行通信
- 想要在登录页面和其他页面应用程序 angularjs 之间分开
- 托盘应用程序和JavaScript之间的通信
- 在 ExtJS 4 应用程序之间共享模型
- 有场景和没有场景的三星智能电视应用程序之间的区别
- 谷歌邮件应用程序脚本中的正则表达式困难 - 在两个单词之间选择单词
- 如何在多个角度应用程序之间共享相同的配置