`

解决iframe中jsessionid无法传递导致session丢失的问题

阅读更多

在实现 ISMP2.1.1 接口的适合需要用到sso,而ISMP里定义的接口是需要在iframe等嵌入页面中调用sso接口,在实际开发中发现session无法正常传递。

重现问题的场景是:

1.先访问a站点:http://192.168.18.2/test.jsp

test.jsp的代码为:

<html>
<head>
<title> 618119.com </title>
</head>
<body>
<iframe src=”http://192.168.18.3/sso.jsp?ssoinfo=xxxx“>
</iframe>
</body>
</html>

sso.jsp里读取传递的ssoinfo,反向调用ISMP认证接口,

生成session,然后放入指定的属性值,

session.setAttribute(“ssoUser”,”lizongbo”);
页面再重定向到 http://192.168.18.3/iframe.jsp

response.sendRedirect(“/iframe.jsp”);

iframe.jsp中读取session中ssoUser的属性值,会发现无法读取。
2.如果先访问了 192.168.18.3的页面,再访问192.168.18.2的页面,此时的iframe嵌入是可以传递已生成好的jsessionid Cookie.

因此解决的办法有:

a.在url中加上jsessionid.

例如重定向到 response.sendRedirect(“/iframe.jsp;jsessionid=lizongbo”);
而这种情况下,如果iframe.jsp页面内的其它连接的url没有加上jsessionid,

也无法继续传递session,不过通过在客户端的js来为每个超连接的href属性重写加上jsessionid.

b.sso.jsp里设置P3P头信息
例如 P3P: CP=”CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR”

或 P3P:CP=”CAO PSA OUR”

java代码为:

response.addHeader(“P3P”,”\”CAO PSA OUR\”");

 

 

===============================

1.将隐私调低也可以解决该问题

2.将ifame里的地址加入到可信站点

分享到:
评论

相关推荐

    IFrame中Session丢失的解决办法

    IFrame中Session丢失的解决办法

    一个服务器搭多个tomcat导致session丢失,或者同一个IP不同端口,多个应用的session会冲突解决方法

    经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的...

    nginx反向代理导致session失效的问题解决

    在本文中,我们将深入探讨一个常见的问题:如何解决由Nginx反向代理导致的Session失效问题。这个问题通常发生在使用Nginx作为前端服务器,将用户请求转发到多个后端应用服务器的环境中。在这样的架构中,Session管理...

    jsessionid存在的问题及其解决方案

    NULL 博文链接:https://mysun.iteye.com/blog/413836

    CASClient集群环境的Session问题及解决方案.docx

    本文将详细介绍 CASClient 集群环境中的 Session 问题及解决方案。CASClient 是一种开源的单点登录系统,能够提供统一的登录和注销机制。但是在集群环境中应用 CASClient 时,可能会出现一些问题,例如 Session 信息...

    解决因浏览器关闭导致购物车数据丢失问题

    然而,当用户关闭浏览器或因为其他原因导致会话(Session)失效时,购物车中的数据可能会丢失,给用户带来不便。为了解决这个问题,我们可以采取一些策略来持久化购物车数据,即使在会话结束后也能恢复用户的购物车...

    Session Cookie的HttpOnly和secure属性

    一、属性说明: 1 secure属性 ...也就是说两个属性,并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。 二、实例 项目架构环境:jsp+servlet+applet

    cookie_session知识点

    由于默认的jsessionid Cookie没有设置有效期,它会在浏览器关闭时从内存中删除,导致Session失效。 6. **乱码问题**: - 解决中文乱码问题,对于POST请求,可以使用`request.setCharacterEncoding("gbk")`设定请求...

    tomcat修改jsessionid在cookie中的名称

    tomcat修改jsessionid在cookie中的名称

    关于集群 cook 覆盖问题 及解决方法

    需要注意的是,如果两个应用在同一WebLogic服务器的不同域中,但Context-root相同,那么设置不同的Path可能无法解决问题,此时应考虑使用不同的Cookie名称。 **四、WebLogic修改JSESSIONID方法** 要修改默认的...

    nginx session共享的问题.docx

    这是因为session通常依赖于服务器存储,当涉及到多服务器的集群环境时,不同服务器之间无法共享session数据,可能导致用户状态混乱。通过将session数据转换为cookie,客户端负责携带这些信息,避免了服务器间的同步...

    java中Cookie被禁用后Session追踪问题

    Java 中 Cookie 被禁用后 Session...Java 中 Cookie 被禁用后 Session 追踪问题可以通过使用 encodeURL 或 encodeRedirectURL 方法来解决,这些方法可以确保服务器端可以获取 JSESSIONID 信息,从而实现 Session 追踪。

    android获取jsessionId和发送jsessionId

    android获取jsessionId和发送jsessionId

    解决vue项目axios每次请求session不一致的问题

    1、vue开发后台管理项目,登录后,请求数据每次session都不一致,后台返回未登录,处理方法打开main.js设置: // The Vue build version to load with the `import` command // (runtime-only or standalone) has ...

    session的实现方式

    因此,但你刷新上一次的请求时,页面会输出一个名为 JSESSIONID 的 Cookie,后面就是相应的 Cookie 值,也就是本次“会话”的 SessionID,但你再次刷新此页面时会得到相同的输出,因为在一次“会话”中,请求信息...

    Nginx + Tomcat +session共享.docx

    为了解决这个问题,我们需要添加一个名为 `jvmroute` 的模块,这个模块允许 Nginx 将特定的 JSESSIONID 传递给 Tomcat,从而实现 Session 共享。以下是添加和编译该模块的步骤: 1. 下载 `nginx-upstream-jvm-route...

    Javaweb项目session超时解决方案

    解决Session超时的问题,需要对所有的/web/请求进行登录拦截,Session超时时跳转到登录页面。可以通过配置Session超时时间来实现这一点。在项目的web.xml中可以进行配置,如下: &lt;!-- 设置Session超时时间 --&gt; ...

    Nginx Tomcat 集群的Session 复制

    Nginx Tomcat 集群的Session 复制,解决了,集群情况下的session复制问题。

    spring-session简介及实现原理源码分析

    Spring-Session 的主要优势在于它可以解决 Session 管理问题,提供了多种存储 Session 的方式,并且可以轻松快捷地集成到我们的应用程序中。它支持多种存储容器,包括 Redis、JVM 的 Map、Mongo、Gemfire、...

Global site tag (gtag.js) - Google Analytics