首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

iframe与session其间的纠结

2012-11-08 
iframe与session之间的纠结 1 楼willko2010-02-26没仔细看。这个我以前也遇到过。不同子域,在ie6下无法读取

iframe与session之间的纠结

 

1 楼 willko 2010-02-26   没仔细看。
这个我以前也遇到过。
不同子域,在ie6下无法读取到cookie 2 楼 nishizhutou 2010-02-28   有些地方没明白,
“当页面全部加在完成后,session id已经被改过一次了”这句,为什么session id在登录期间会被修改啊?
还有“不同的iframe会在同一个页面产生不同的session id”,这个前提是指在不同的iframe都登录吧,如果iframe里面那个的页面没进行登录操作也是会出现你说的情况?还是说,你们的应用不登录也会产生个session id?
那你现在的处理也不一定能成啊,如果浏览器加载iframe是并发的,还是有并发问题的。
3 楼 icefire 2010-02-28   应该是没登录前,请求了两次,而每次请求会产生一个新的ID,主页面和iframe页面所使用的ID分别是两个。不知是否是这种情况。 4 楼 tedeyang 2010-02-28   iframe是有点邪恶的,因为他掩盖页面和url的直接关系,而且能跨域,经常会掩盖问题。

5 楼 funcreal 2010-03-01   nishizhutou 写道有些地方没明白,
“当页面全部加在完成后,session id已经被改过一次了”这句,为什么session id在登录期间会被修改啊?
还有“不同的iframe会在同一个页面产生不同的session id”,这个前提是指在不同的iframe都登录吧,如果iframe里面那个的页面没进行登录操作也是会出现你说的情况?还是说,你们的应用不登录也会产生个session id?
那你现在的处理也不一定能成啊,如果浏览器加载iframe是并发的,还是有并发问题的。



注意,session id不是登录期间被修改的,而是页面加载期间。这个可以做一个测试的。在www.abc.com/a.html的一个页面上嵌套两个同域名但不同工程的页面,比如www.abc.com/sp1/a.jsp和www.abc.com/sp2/a.jsp。
然后用httpwatch或firebug监测。你会发现客户端的session id会发生变化。我所说的被改过,就是这个意思。

页面全部加在完成后,才会发生客户的登录操作。这时候我再从客户端取session id,取到的肯定是最后加载的iframe所产生的session id。 6 楼 diven1201 2010-03-01   lz说是页面上iframe进来了两个不同工程的页面,那我觉得产生的这两个session之间应该没有关系吧,谁也不会覆盖掉谁,登陆页面提交的session id 应该是自己所对应的那个才对呃。新手,请勿见笑。。 7 楼 funcreal 2010-03-02   diven1201 写道lz说是页面上iframe进来了两个不同工程的页面,那我觉得产生的这两个session之间应该没有关系吧,谁也不会覆盖掉谁,登陆页面提交的session id 应该是自己所对应的那个才对呃。新手,请勿见笑。。

两个工程和首页面都是同域的,jsessionid是共享的。抛开当前问题,你可以做一下实验。先访问sp1,再访问sp2,你看看他们两个的session id是否一致?在我的实验环境下是一致的。
至于是否可以把cookie(jsessionid)的作用域改到sp1或sp2子目录上我也没有再进一步研究。希望有高手能给些指点。 8 楼 xielingjiang 2010-03-02   funcreal 写道diven1201 写道lz说是页面上iframe进来了两个不同工程的页面,那我觉得产生的这两个session之间应该没有关系吧,谁也不会覆盖掉谁,登陆页面提交的session id 应该是自己所对应的那个才对呃。新手,请勿见笑。。

两个工程和首页面都是同域的,jsessionid是共享的。抛开当前问题,你可以做一下实验。先访问sp1,再访问sp2,你看看他们两个的session id是否一致?在我的实验环境下是一致的。
至于是否可以把cookie(jsessionid)的作用域改到sp1或sp2子目录上我也没有再进一步研究。希望有高手能给些指点。
你的问题是说sp1的web容器拿到了客户端发来的sp2的session id,所以sp1的web容器无法查到对应的session,所以也无法去sso系统签退?
问题应该是浏览器的cookie是按照域来拿的,浏览器并不知道sp1和sp2是不同域的。
但是我记得cookie不仅仅依赖域www.abc.com还依赖于path吧,sp1和sp2的session id的path肯定不同吧,你的服务器代码里面取cookie的时候是否考虑到了? 9 楼 chbest 2010-03-02   我觉得采用cookie技术就没这个问题了 10 楼 funcreal 2010-03-02   chbest 写道我觉得采用cookie技术就没这个问题了

以上讨论都是基于cookie技术的session实现。 11 楼 onedear 2010-03-02   http://support.microsoft.com/kb/323752
这里就有相关解释,
我遇到的问题跟楼主很相似,
万恶的ie……
12 楼 funcreal 2010-03-02   onedear 写道http://support.microsoft.com/kb/323752
这里就有相关解释,
我遇到的问题跟楼主很相似,
万恶的ie……


不是同一个问题。
你给的解释是如何让iframe跨域的问题,而我的问题是在同域发生的,而且在火狐中也有这个问题。
13 楼 hlf297512399 2010-11-08   。我让sid这个参数在登录的时刻通过JS从cookie中获取


这个可以解释详细点不? 14 楼 kfc_davy 2010-11-08   lz 前几天刚好遇到类似的问题 不知道是否和你的是一个

iframe里面的左侧菜单栏点击链接,中间frame中的main frame 定位到这个链接

这个过程中间的main frame 的app获得的sessionid是始终在变的,

于是通过httpwatch发现浏览器的cookie只有receive过程,米有send的过程,

google了下才知道ie 里面 的 iframe里面由于安全,不能获得cookie,需要加上p3p 因此基本无解吧 :0

btw除非不跨域



热点排行