IFrame中Session丢失的解决办法

转载 2007年09月21日 14:27:00
 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionState
mode="StateServer"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="40"
/>
把cookieless="false"改成"true"就可以了。但也同样有个小问题,就是如果页面中采用Javascript的window.location.href=''这样的方式来重定向的话,系统会认为这是另一个新的请求,产生一个新的SessionId,导致原Session同样的丢失。所以对于重定向,还是使用Response.Redirect()为好。

除了Ifrmae有丢Session问题外,frameset也有同样的问题。Frameset的问题更不移定,是有时会丢,有时不会丢,这更认人头痛,在网上找到了一个方法,在页面page_onload里添加一语句:
Response.AddHeader("P3P","CP=CAO PSA OUR");
FrameSet中的Session丢失问题就解决了。至于里面具体的原因 也没时间去搞懂了。

-----------------------------------------------------------------------------------------------------------------------------------------------

在实际操作中,以上设置将导致对方post过来的数据我方接收不到的问题,正确的解决方法应该是:

http://www.cnblogs.com/suxvsheng/archive/2007/08/17/860157.html

IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG?
偶然中发现一个IE浏览器的问题:
站点aa.com的页面a.aspx中存在一个iframe,iframe的src为站点bb.com的b.aspx。b.aspx设置了一个COOKIE(不管临时保存还是长期保存),然后刷新aa.com/a.aspx,bb.com/b.aspx也会被刷新,这时候会发现第二次向bb.com/b.aspx的请求里面并没有带入第一次设置的COOKIE。
更确切地说:IE浏览器丢掉了框架中不同域的COOKIE。

查看浏览器的隐私选项,默认是“中”。现在把隐私的等级修改成“低”,再次做上面的测试,然后发现框架中的COOKIE可以被带入了。
从这个现象来看,应该是IE出于安全考虑而做了限制。但是!!!处于不同的两个域的的页面,应该被看成打开了两个互不相关的浏览器窗口,大家各自设置自己的COOKIE,各自带入到下次请求中,只要互不影响,不应该受到限制。
恩,那么,为什么要限制呢?看来还是微软的程序员对自己浏览器的安全没什么信心,担心同一浏览器窗口不同域的情况下,黑客仍可能获取另一域的COOKIE,所以干脆把其中一个域的COOKIE干掉!!!人家FireFox为什么就没这种限制?

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


问题根源:

IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6

解决方法:

很简单,在要嵌入的内容中(iframe指向的站点)输出P3P的主机头声明,步骤如下(Session variables are lost if you use FRAMESET in Internet Explorer 6):

1.打开IIS管理器 inetmgr
2.选择被嵌入iframe源站点或者目录,右键点击打开属性框
3.切换到HTTP头
4.添加
5.自定义HTTP头名: P3P
6.自定义HTTP头值: CP="CAO PSA OUR"
7.关闭属性框退出,即刻生效
至于上面CAO PSA OUR的具体意思,还是请参考前面的文章:Privacy in Internet Explorer 6

至此,iframe框架下session丢失的问题才彻底解决。

相关文章推荐

IFrame带来的Session问题

客户原来有个Web App系统A,我们要基于A开发一个系统B,但不希望B对A依赖太重,所以B被实现为一个独立的Web App(war)。A和B部署在同一个Weblogic server上,在A中可以导...

ifame共享session的解决方法

在开发中碰到的问题,同事做的一个页面中的iframe要调到我这边地址,并且url后附着验证码,而我验证时要取得他session中的登陆信息。结果是iframe对第一个action可以相应,但我的页面包...
  • ykdsg
  • ykdsg
  • 2008-08-19 19:42
  • 2144

iframe与session之间的纠结

近几日发现,我们维护的系统登录后不能正常退出了。点了“退出”按钮以后没反应,但不是每次都没反应。要想解决这个问题,就必须先弄清楚系统的架构。别以为就一个简单的登录退出,要是那么简单就不至于拿出来单练了...
  • jgwei
  • jgwei
  • 2011-02-14 09:46
  • 1339

iframe 跨域访问session/cookie丢失问题解决方法

解决iframe跨域访问cookies/session丢失问题,兼容IE,safari浏览器。

iframe 跨域访问,session丢失的问题解决方案

在做项目的时候,碰到一个很棘手的问题。在一个应用中通过iframe的方式嵌入另一web应用,但是session中明明放了值,但是就是死活获取不到。几经周折,终于皇天不负有心人,总算找到了关键命脉所在。...

session过期后自动跳转到登陆页

项目需要做一个自动登出的功能,查询了网上的资料,一开始准备用session监听做,按照下面方式配置监听器 1.在项目的web.xml文件中添加如下代码: ? ...

web.xml配置Session超时时间注意的单位问题

http://blog.csdn.net/princezx/article/details/5600500 为单个Web应用 配置超时时间可以在web.xml中使用元素,如 ...

Session过期,如何跳出iframe框架页的问题

web开发中经常会有这种情况,在一个主页

session过期跳转到登陆页面并跳出iframe框架的两个方法

原文章地址:http://1008610086.blog.51cto.com/4995677/1538464 最近在做拦截器,判断用户登录后操作超时,失去权限然后要重新登录,但是用的...

IFrame中Session丢失的解决办法

N层IFrame 框架集 单独测试都是没有问题的,结果再次嵌套问题就来了,登录以后,碰到每个页面检查登录时,SESSION就丢掉了,百思不得其解。百度一下,找到解决方案: 在开发中,我们经常会遇到...
  • joliny
  • joliny
  • 2012-03-13 12:07
  • 1034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)