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

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

重现问题的场景是:

test.jsp的代码为:

618119.com

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

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


版权声明:本文为weixin_35943776原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。