IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

IFrame带来的Session问题

IDEAL Garden 2011-06-01 23:34:12 累计浏览 4,101 次
本机暂存

    客户原来有个Web App系统A,我们要基于A开发一个系统B,但不希望B对A依赖太重,所以B被实现为一个独立的Web App(war)。A和B部署在同一个Weblogic server上,在A中可以导航到B,两个系统看起来像是一个系统。

    有个小需求是,在B中希望显示一个页面,根据参数能展示出不同的信息。这个页面在A中已经存在,所以自然而然最快的方法就是在B中创建一个iframe来指向那个A中的页面,配以不同的参数,多快好省!

    问题很快出来了,QA发现那个iframe中的A页面很快就会session timeout,然后会提示用户输入登陆用户名和密码,而iframe外的B session并未过期的。

    问题在于A和B实际上还是两个Web App,各自有各自的session。因为不能简单地修改A的页面,让它保持session不会timeout,所以剩下的办法只好是控制B的session timeout时间要早于A了。还有什么更优雅的方法呢?

    如果给我一次重新实现的机会,我宁愿自己画一个属于B的页面,而扔掉iframe。

    另外一个需求是,A和B是各自独立的Web App对于用户是透明的,用A的用户登陆进来可以直接进入B,反之则不可以。解决办法有点tricky,A的contextRoot设为/,B的contextRoot设为/XXX,这样二者的servletContext为同一个,即可实现A把自己的loginToken放到servletContext中后由B访问到,从而在请求B页面时,检查是否能取到servletContext中的loginToken,如果不能则转向到A的登陆页面,这点由Filter来实现。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 浅析http协议、cookies和session机制、浏览器缓存 (累计阅读 17,446)
  2. 你必须了解的Session的本质 (累计阅读 11,441)
  3. jQuery插件---轻量级的弹出窗口wBox. (累计阅读 10,772)
  4. iframe大小自适应 (累计阅读 10,057)
  5. iframe里src="about:blank"的问题。 (累计阅读 8,088)
  6. 优雅绝妙的Javascript跨域问题解决方案 (累计阅读 8,067)
  7. 跨域请求的iframe解决方案(1) (累计阅读 6,501)
  8. ajax-cross-domain (累计阅读 5,906)
  9. BO报表系统嵌入Iframe在firefox下的错误修改 (累计阅读 5,700)
  10. ie下iframe输入框焦点丢失解决方案 (累计阅读 5,581)