Frameset导致Cookies和Session丢失的原因及解决办法

【前端面试知识题】- 3. HTML && CSS BFC是CSS布局的一个概念,是一个独立的渲染区域,规定了内部box如何布局, 并且这个区域的子元素不会影响到外面的元素,其中比较重要的布局规则有内部 box 垂直放置,计算 BFC 的高度的时候,浮动元素也参与计算。来调整图片的位置,不过HTTP2不适用,原因为HTTP2实际上是多路复用的,只用一个TCP连接,所以多个图片的请求也是在同一个TCP连接里,这样能省下非常多的请求时间,但坏处就是单连接开销很大,如果要传多个大文件,就很麻烦。面对经济的下行和大学生毕业人数的突增,现在的就业状况极其严峻。 阅读详情
1.Frameset导致Cookies和Session丢失的原因及解决办法 


使用框架(Frameset)调用不同域名下的页面,会出现此域下页面的Cookies和Session丢失的现象。
 
原因:基于IE6.0对W3C 关于cookie的P3P协议的支持,使用框架调用不同域下的页面,默认情况下IE会自动禁用此域下的Cookies,因此会出现Cookies和Session丢失的现象。
 
解决方法:在Frame调用的页面里加上Response header确认信息。
 


<% Response.AddHeader "P3P","CP=NOI DSP COR NID ADMa OPTa OUR NOR"  %>
 
参考文件:http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q323752


2.使用frame注意session陷阱 
最初发现特定情况下使用frame会导致生成多个session是很久以前的事了,今天突然想起来觉得有必要做个总结,毕竟这种情况还是比较隐蔽的,那么什么时候使用frame会产生多个session呢,产生多个session后又会产生什么样的麻烦呢?隐蔽在哪里呢?
 
1.什么时候使用frame会产生多个session
 
不管是frameset还是iframe,只要frame所在文件是htm或html的时候,即静态网页时就会产生多个session,至于几个session和frame的个数是相等的。使用jsp就不会产生多个session。
 
2.产生多个session后又会产生什么样的麻烦呢?
 
带来的麻烦是不预期的,比如在其中一个frame中向session中存放了对象,但是在另一个frame中是拿不到这个对象的,因为不是一个session。
 
3.隐蔽在哪里呢?
 
虽然一次产生了多个session,但是无论那个frame页面进行刷新都只会使用最后一个session,所以对程序员来说很难发现。
 
最后,如何来证明上面的事实呢,我写了一段验证代码。
 
//  left.jsp


sessionId:<%=session.getId()%>


<%session.setAttribute("test","test");%>






//  right.jsp


sessionId:<%=session.getId()%>


attribute:<%=session.getAttribute("test")%>






//  frameset.htm和frameset.jsp相同


<html>


<head>


<title></title>


</head>


<frameset rows="*" cols="400,*" >


    <frame src="left.jsp" />


    <frame src="right.jsp"/>


</frameset>


</html>


//  ifameTest.htm和ifameTest.jsp相同


<html>


<head>


<title></title>


</head>


<body>


<iframe src="left.jsp" height="200" width="300"></iframe>


<iframe src="right.jsp" height="200" width="300"></iframe>


</body>


</html>
 
 
发布到tomcat上,分别访问下面4个文件即可,注意每次测试过一种情况后要重启浏览器。 ifameTest.htm ifameTest.jsp frameset.htm frameset.jsp
 
注意观察比较session id 就可以发现问题,非常直观。


----------------
3. iframe,Frame中关于Session丢失的解决方法 
转载:http://blog.youkuaiyun.com/aspgreener/archive/2007/09/05/1772920.aspx
 
在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:<sessionstate></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丢失问题就解决了。至于里面具体的原因 也没时间去搞懂了。 
--------------------
4 IE中使用IFrame或Frameset导致session丢失的问题 




整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会


session失效!


1、由于IE的安全限制,将父页面所在域加入信任站点就OK了!


2、当“父”页面是https的,通过IFrame去访问https页面时,


<iframe name="loginFrame" id="loginFrame" frameborder=NO scrolling=NO src="" class="iframeBody" ></iframe>


   会报“有不安全的信息”


   解决: src="/" 就OK!


3、当客户设置了1时,还是不行时,怎么办呢?又查询了一些网上的资料!(
本文转载自:http://wwww.javaeye.com/blog/420145)


    IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。


    在frameset里面,也就是里面的frame是来自第三方站点(不同IP或不同域名),那么默认情况下IE会自动禁用这些站点的cookie,也就是在请求某url时在HTTP header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏览器的。


在用户浏览a.php时 a.com写入的为第一方Cookie,其嵌入的iframe 指向b.php.这时b.com写入的就为第三方Cookie了,所以它是被IE挡在了大门外。所以,每次当用户提交的cookie提交时,就挂掉了.因为传不到真实的服务器.


 


解决方案


   1、PHP程序


      可以直接在B网站中写入
      <?php


        header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"')
      ?>


      这样就能接受第三方的Cookie/Session啦。


   2、lighttpd的服务器


      server.modules    = ("mod_setenv")


      setenv.add-response-header = ( "P3P" => "CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'")


   3、apache的服务器


      <VirtualHost>


         Header set P3P 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'


      </VirtualHost>


   4、IIS的服务器


      增加一个网站http头来解决问题;


      管理 工具——〉选择一个网站 ——〉属性——〉http头,增加一个http头


      然后输入头名:P3P


     输入头内容:CP=CAO PSA OUR


   5、jsp页面:


      <%


          response.setHeader("P3P","CP=CAO PSA OUR");


      %>


 


 



session丢失解决方案 重定向的时候是有session丢失的问题;window.open丢失session问题;使用框架(Frameset)调用不同域名下的页面,会出现此域下页面的Cookies和Session丢失的现象。 立即下载

相关推荐

Hermes Dashboard Web 端部署完整说明

通过反向代理(nginx)使用公网域名访问时,会遇到 Host 头校验、CORS 跨域、WebSocket 连接拒绝三个核心问题。本文档记录了完整的源码修改方案和部署步骤。确保 nginx 主配置加载了 WebSocket map(宝塔默认为。路径的公开访问(无需登录),其他路径仍受 Cookie 认证保护。Hermes Dashboard 默认绑定。访问站点时会先弹出浏览器密码框,输入用户。在 nginx 反向代理配置中的。环境变量动态读取允许的域名。nginx 配置中已添加。

大白菜代码的博客 805

解决PHP套用Iframe访问导致cookie跨域session失效

解决php套iframe导致cookie、session失效

多吉 4205

别再用MounRiver了!在VSCode里用PlatformIO搞定CH32V208开发(附完整配置流程)

本文详细介绍了如何在VSCode中使用PlatformIO进行CH32V208开发,替代传统的MounRiver Studio。通过完整的配置流程和优化技巧,开发者可以构建高效、现代化的RISC-V开发环境,显著提升编译速度和开发效率。

weixin_28711397的博客 535

PHP网站在Iframe登录无效,cookie跨域session失效导致

在网站B的session_start();或 Session::start();在网站A中使用iframe里访问网站B时,一直登录失效,原因是cookie跨域失效。

小虎哥-不可能变成可能 1012

OpenFOAM-v2006重叠网格挖洞问题实战:如何手动修复overset代码中的边缘识别缺陷

本文深入探讨了OpenFOAM-v2006中重叠网格挖洞问题的实战解决方案,重点修复overset代码中的边缘识别缺陷。通过逆向工程解析挖洞决策机制,设计最小侵入式的函数override方案,并建立多级验证体系,有效解决了网格挖洞区域覆盖不全的问题,提升了计算流体动力学模拟的准确性和可靠性。

weixin_29216049的博客 433

Python 实战:高效绕过 reCAPTCHA v3 的自动化策略

本文深入探讨了使用Python高效绕过reCAPTCHA v3验证的实战策略。文章首先解析了reCAPTCHA v3无感验证的评分机制,随后详细介绍了两种核心解决方案:一是利用CapSolver等专业API服务直接获取有效token,二是通过Playwright模拟真人浏览器行为以提升评分。文中提供了从定位关键参数到代码实现的完整流程,并强调了合规操作与请求频率控制的重要性,为自动化开发者提供了切实可行的技术指南。

weixin_29057065的博客 489

php套用Iframe访问导致cookie跨域session失效问题

2.Chrome的(这个要注意php版本,低版本是没有ini_set('session.cookie_samesite'这个的,当时搞了半天,最后才发现我这边php版本过低(我这边php版本是5.4.16)导致不生效,可以参考php运行配置。a网站(www.aa.com)嵌入b网站 (www.bb.com) 网站,因为跨域原因,其实如果b网站是以aa.com后缀结尾的话是正常的。1.上面的试了这个IE的没什么用(有可能是我这边版本低导致)

qq_39634880的博客 843

【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤

Windows 11 安装 WSL2 和 Ubuntu 22.04 指南 本文详细介绍在 Windows 11 上安装 WSL2 和 Ubuntu 22.04 的完整步骤,包括: WSL2 与 VirtualBox 的性能对比优势 系统版本检查与升级方法 两种安装方式(一键安装和手动安装) Ubuntu 22.04 的安装与配置 存储位置管理及迁移技巧 常用 WSL2 命令速查表 文章还提供了性能优化建议和常见问题解决方案,适合开发者和 Linux 爱好者快速搭建高效的开发环境。

No8g攻城狮的博客 2万+

chrome更新到80以上版本后,带来的跨域请求cookie丢失问题

chrome更新到80以上版本后,带来的跨域请求cookie丢失问题 cookie的SameSite属性默认值由None变为Lax 此时可以尝试显式声明 Cookie 的SameSite属性为None,并设置Secure (不然无效)。 Cookie 的SameSite属性用来限制第三方 Cookie,从而减少安全风险。 更多参考:谷歌浏览器 Cookie 的 SameSite 属性 (转) 它可以设置三个值。 Strict Lax None None Chrome 计划将Lax变为默认设置(80版本已实施

qq_26094091的博客 4294

【FastDDS】Discovery ( 01-overview )

Fast DDS 提供了多种发现机制用于自动匹配数据写入器和读取器,包括简单发现(默认兼容RTPS标准)、静态发现(可跳过SEDP阶段)、集中式的发现服务器架构以及手动RTPS发现。发现过程分为参与者发现(PDP)和端点发现(EDP)两个阶段,PDP通过多播/单播公告确认参与者存在,EDP则匹配主题和数据类型相同的端点。系统支持配置发现协议、租约期限等通用参数,以及各机制特有设置如静态EDP XML配置、服务器定位器等。此外还支持通过监听器实现发现回调功能。

Ray Home 721

安路TangDynasty和FD和JTAG驱动器安装

安路FPGA产品矩阵包含SALPHOENIX高性能、SALEAGLE高性价比和SALELF低功耗三大系列,广泛应用于网络通信、消费电子等领域。配套的TangDynasty(TD)集成开发环境支持标准设计输入,提供完整优化流程与调试工具。简要介绍了TD 6.2.1版本的安装步骤。

wangjie36的博客 1039

IIS解决IFRAME中COOKIE、SESSION丢失

一个位于iframe中的aspx页面,通过iframe的src参数调用,并传递参数,但是ASPX页面无论如何也不能保存SESSION,COOKIES也不行,后来在网络上搜索了相关文章后才知道,IE默认不接受没有标识为安全的第三方COOKIE,造成不能保存COOKEIS以及SESSION。   处理方法:   打开IIS管理器,打开ASPX页面所在的那个站点的属性->HTTP头->添加按钮  

天地不仁,以万物为刍狗 2078

halcon知识:常见三种模板匹配方法总结

halcon的三种模板匹配方法总结,halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类 本文只对形状匹配做简要说明和补充: Shape_Based匹配方法: 上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。 先要补充点知识:形状匹配常见的有四种情况 一般形状匹配模板shape_model、线性变

gongdiwudu的专栏 4万+

跨站点Session失效问题

如果在A网站引用B网站的页面,获得B网站的Session,但是从A站点跳转到B 站点后,B站点的Session失效了!无法获得原来的Session。经过同事的努力查找,找到相应的解决办法,详细内容如下:http://support.microsoft.com/kb/323752/  (机器翻译的,极烂!)http://support.microsoft.com/kb/323752/

凌云霄天翔 2527

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Asp.net mvc如果解决Iframe、Frameset 中Session、Cookie丢失的问题。

<br />今天做项目的时候遇到这个问题,情形大概是这样,就是在一个创建页面里需要弹出一个窗口,而这个窗口是通过js方式创建Iframe来加载数据的。大家应该知道,默认情况下,Iframe、Frameset会重新开启新的进程,也就是无法获取当前用户的session、cookie信息。可是项目又要求必须获取,怎么办呢?<br />      在网上搜索资料,找到一个还不错的解决方案,如下:<br />view plaincopy to clipboardprint?<br />用P3P header解决ifr

simenpeng的专栏 8052

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Scrapy爬虫实战:从视频社区采集数据入库MySQL

网络爬虫是从互联网批量获取结构化数据的重要技术手段,其核心在于请求调度、页面解析与数据持久化。Scrapy作为Python生态中成熟的异步爬虫框架,内置并发管理、请求去重、中间件与管道机制,能够高效处理列表页翻页、动态接口识别与字段清洗等常见问题。采集得到的视频标题、播放量、点赞数等指标,经标准化转换后存入MySQL关系型数据库,可为后续可视化分析或推荐系统提供数据底座。本文以视频创作社区前20页数据为练习场景,完整演示了从页面分析、字段设计、代码实现到入库去重的工程流程,并总结了限流应对、选择器失效排查等

weixin_30613727的博客 782

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IE浏览器跨域访问iframe 中 Cookie/Session丢失解决方案

偶然中发现一个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。

CHBOS的专栏 1717

iframe中cookie失效问题

其根源也是由于iframe跨站点cookie被阻导致session失效。但是当时因为两个站点都是自有的服务器,因此通过设置了相同的父域名解决了此问题,所以后来也就没有深入研究此问题。 目前在开发新功能时,又一次遇到了此问题,但是如果仍旧通过更改域名的方式来解决的话,设计上可能就会非常麻烦。于是不得已彻底翻了一下资料,初步研究结果如下:问题根源: IE6/IE7支持的P3P(Platf...

weixin_30664539的博客 539

PHP 浏览器禁用cookie,解决session变量不能传值

浏览器禁用cookie,解决session变量不能传值 在PHP中使用过SESSION的朋友可能会碰到这么一个问题,SESSION变量不能跨页传递。这令我苦恼了好些日子,最终通过查资料思考并解决了这个问题。我认为,出现这个问题的原因有以下几点:  1、客户端禁用了cookie  2、浏览器出现问题,暂时无法存取cookie  3、php.ini中的session.use_trans_sid

niky的博客 959

cookies造成的SESSION丢失

     昨晚在测试自己的asp cookies的翻页程序时,刚开始都很顺利 ,但是翻的页数多了以后会突然提示未登陆刚登陆一会的session没有了,反复测试几次后发现问题依旧存在,想到session和cookies都是需要在本地保存数据的,就列出所有cookies来测试,发现每次到20个cookies时就会出现这个错误   分析错误想到以前看过cookies 一个网站最多能有20个,现在出错

点风 1119

IFrame中Session丢失的解决办法

 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="da

C#.Net/通信/网页/WinForm专题 1万+
上一篇: 网站获取非根目录下面的文件---虚拟路径
下一篇: WIN8 安装IIS及本地网站
PI_ZT
博客等级 码龄12年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值