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

作者:lizongbo 发表于:08:35. 星期三, 十二月 19th, 2007
版权声明:可以任意转载,转载时请务必以超链接形式标明文章和作者信息及本版权声明。

在实现 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>
< src=”http://192.168.18.3/sso.jsp?ssoinfo=xxxx“>
</iframe>
</body>
</html>

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

生成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;=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\”");

问题描述及解决办法可参考:

http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q323752

http://blog.csdn.net/mshust2006/archive/2007/06/03/1636807.aspx

http://www.dreamcoder.cn/blog/?p=72

http://www.kingmx.com/article/15061

http://www.dup2.org/node/384

Tags: , , ,

标签: , , ,


分享到 Google Buzz
点此分享到QQ空间
点此分享到腾讯微博

与《解决iframe中jsessionid无法传递导致session丢失的问题》相关的搜索:

留下回复