在实现 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丢失的解决办法
经过资料查找,发现问题是因为:IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。IP相同的两个session对应的...
NULL 博文链接:https://mysun.iteye.com/blog/413836
一、属性说明: 1 secure属性 ...也就是说两个属性,并不能解决cookie在本机出现的信息泄漏的问题(FireFox的插件FireBug能直接看到cookie的相关信息)。 二、实例 项目架构环境:jsp+servlet+applet
tomcat修改jsessionid在cookie中的名称
android获取jsessionId和发送jsessionId
服务器端获取Session对象依赖于客户端携带的Cookie中的JSESSIONID数据。如果用户把浏览器的隐私级别调到最高,这时浏览器是不会接受Cookie、这样导致永远在服务器端都拿不到的JSESSIONID信息。这样就导致服务器端的...
1、vue开发后台管理项目,登录后,请求数据每次session都不一致,后台返回未登录,处理方法打开main.js设置: // The Vue build version to load with the `import` command // (runtime-only or standalone) has ...
Nginx Tomcat 集群的Session 复制,解决了,集群情况下的session复制问题。
重定义URL 使其直接进去网页 不用登录 用于:邮件链接直接进入网站
Set-Cookie: JSESSIONID=8AB51DC4244907FD9EBB063C7FD73CBA; Path=/; HttpOnly 解决此类cookie暴露项目路径问题
之前上传了一个通过Flash实现多...方法二:在application(ServletContext)里保存一个session管理器HashMap:sessionId---sessionRef,这样可以在所有的servlet/jsp里调用,这需要在url里将sessionId以参数形式传递,如...
结合实例,并且对我们常用的request.getSession();等语句进行了实质性的内部解剖,看完这个文档百分百让你懂session和cookie的联系。个人觉得我上传的资源都对的起各位访友下载需要的积分。
普通的Web开发,都是把sessionid保存在cookie中传递的。 不管是java还是php,服务端的会在response的header中加上Set-Cookie Response Headers Content-Type:application/json;charset=UTF-8 Date:Mon, 02 Apr ...
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.... * LIABLE FOR ANY DIRECT, ...
Tomcat集群Redis会话管理器 ... 展望未来,我们无需在Load Balancer中启用粘性会话(JSESSIONID)。 支持: Apache Tomcat 7 Apache Tomcat 8 Apache Tomcat 9 Apache Tomcat 10 资料下载: Maven配置 <id>repsy
如此一来,服务器只要在接到用户请求时候,就可以拿到jsessionid,并根据这个ID在内存中找到对应的会话session,当拿到session会话后,那么我们就可以操作会话了。会话存活期间,我们就能认为用户一直处
上某培训班的servlet笔记 Session 功能的实现依赖cookie URL 重写: 就是把原来送往客户端页面中的所有URL,重新编写. 怎么重新编写 String newURL=... session id 不再通过请求头中传送,而是直接放在URL中
不会因为cookie的问题而读取到不同(错误的)jessessionid.. 目的就是让用户整个访问过程中,项目读取到用户浏览器的同一个cookie..就会有一样的jessessionid.. --> <!-- sessionIdCookie的实现,用于重写覆盖容器...
Js代码 $('#file_upload').uploadify({ buttonImage: '${ctx }/commons/uploaddify/img/...jsessionid=${pageContext.session.id}?__action=xxx', fileTypeExts: '*.jpg;*.png;*.gif;*.bmp', fileTypeDesc: '图像文件'