IE下iframe跨域session和cookie失效问题的解决方案

解决iframe嵌套第三方网页,导致鉴权失败无法登录的问题 目录前言一、iframe是什么?二、401 (Unauthorized)三、解决总结 前言 最近遇到的一个问题,老项目的第三方以iframe嵌入的网页,无法正常登录了。 定位问题,发现: 控制台报错401 (Unauthorized),导致的无法正常登录。是因为我们iframe问题,产生了导致我们的cookie无法共享。 提示:以下是本篇文章正文内容,下面案例可供参考 一、iframe是什么? HTML 内联框架元素 (< iframe >) 表示嵌套的browsing contex 阅读详情

问题来源:

何为跨域跨域session/cookie?

也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion/cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie。

IE限制第三方session/cookie

随着IE版本的不断更新,版本之间变化很大,其兼容性问题困扰着许多开发者。本问题也不例外,IE7以后,微软逐渐改进了IE安全性,其中默认设置下第三方session/cookie是不允许使用的,这就造成了使用iframe嵌入式访问另外的第三方网站时,不能为其保存会话状态,无法进行登录或跨越取值,从而影响第三方网站功能的使用。

解决方法

手动调整客户端IE浏览器的安全级别

在Internet选项-隐私卡中,调低安全级别到接受所有cookie,或者在[高级]中设置接受第三方cookie。

点评:此方法需要使用者更改客户端浏览器设置,极不便利,且会给使用者电脑带来安全隐患,故不推荐。

代码中使用P3P协议自动更改IE浏览器安全级别

P3P(Platform for Privacy Preferences)是一种可以提供这种个人隐私保护策略。具体做法是在被iframe嵌入的第三方网站代码中加入如下代码: 

response.setHeader("P3P","CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"");

要注意的有:

1、上段代码是jsp的,如果是asp或php等,需要改成相应的语法,参数和取值不变。如ruby为:

response.headers["P3P"] = "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""

2、此方法仅支持动态Web应用,也就是需要使用动态语言设置response的header,且如果是MVC架构的话,最好是在总控制器或过滤器中添加上段代码,这样改动最小。

点评:该方法不需要手动修改客户端IE设置,但需要修改第三方网站的代码,对于第三方网站不在控制范围内情况下无能为力。

在第三方网站服务器中设置P3P协议

第三方网站所使用的应用服务器程序,如果支持设置HTTP头,那么可以通过设置服务器而不必修改第三方网站代码。

例如IIS下,可以打开IIS窗口——〉选择一个网站——〉属性——〉http头,增加一个http头

然后输入头名:P3P

输入头内容:CP=CAO PSA OUR

点评:与上一个方法类似,此方法也要求第三方在可控可管理。

 

参考文档:

IE6_7_8的差异研究 http://wenku.baidu.com/view/48fc9e18650e52ea551898c7.html

IE 8 Beta 1 AJAX程序员指南 http://hi.baidu.com/getpost/item/4934dff573dea7d243c36a6a

解决iframe中jsessionid无法传递导致session丢失的问题  http://618119.com/archives/2007/12/19/48.html

使用X-UA-Compatible来设置IE浏览器兼容模式  http://www.cnblogs.com/nidilzhang/archive/2010/01/09/1642887.html

第一方Cookie与第三方Cookie的区别   http://www.szwebanalytics.com/first-three-party-cookie.html

ie的第三方限制cookie限制解决  http://xcf007.blog.51cto.com/471707/155885/

jsp p3p跨域设置cookie  http://cailin.iteye.com/blog/175422

iframe与session之间的纠结 httpwatch  http://funcreal.iteye.com/blog/603703

进入Ruby on Rails世界  http://dev.yesky.com/340/2612340_3.shtml

JavaScript 跨域访问的问题和解决过程 http://www.cnblogs.com/PurpleTide/archive/2011/11/06/2238293.html

chrome80默认SameSite导致iframe无法获取cookie问题解决方法 项目背景及问题定位 项目背景 A网站(假设为http://SameSite.a.com)作为iframe内嵌在B网站(假设为http://test.a.com)。在B网站中加载A网站的时候,自动登录失效导致接口一直重调。 问题定位 初步分析,A网站为第三方页面,将A网站直接在外部打开可以单独访问,排除A网站的问题 更换浏览器,在火狐Edge中,A网站可正常在iframe中加载。初步定位为浏览器兼容问题 对比能正常加载正常加载的chrome浏览器版本,都更新到最新的89版本。发现状态没变. 阅读详情

相关推荐

SAP农产品增值税进项税解决方案

(三)购进农产品用于生产经营且构成货物实体的(包括包装物、辅助材料、燃料、低值易耗品等),用于生产适用13%税率货物的扣除率为10%,用于生产适用9%税率货物的扣除率为9%。具体计算公式为: 当期允许抵扣农产品增值税进项税额=当期耗用农产品数量×农产品平均购买单价×扣除率/(1+9%)

weixin_44228539的博客 1170

iframesession失效问题的解决办法

何为session/cookie? 也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网 站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie。 我的问题 在开发讯息在线产品(http://iap.pgia.net)测试各种浏览器的兼容性时,发现IE浏览器(v7\8)都无法登录(总是提示验证码匹配

【保研面试】线性代数面试复习

线性相关无关 有向量组A,a1,a2…an , 如果存在是全为0的k1,k2…kn,满足 a1 * k1 + a2 * k2… an * kn = 0 则向量组A称为线性相关(可以跟向量组A共面联系,即可以通过几个向量,表示出另外几个向量,故称为线性相关) 极大线性无关组 设有向量组A a1,a2…an(本身为线性相关) :若选出r个向量,满足以下条件 (1)向量组 r : 线性无关; (2) 向量组A中任意r+1个向量(若有的话)都线性相关, 则向量组r 是向量组A的一个极大线性无关组(简称为

云端筑梦师 6275

iframe嵌套页面,由于同源策略导致cookie无法获取,导致会话session失效问题解决方案

iframe嵌套页面,由于同源策略导致cookie无法获取,导致会话session失效问题解决方案

阳光 7317

iframe嵌入第三方链接页面展示、cookie丢失等问题总结

需求是这样的:有一个第三方开发的系统的页面需要嵌入到我们的项目中,对方提供了一个地址:http://ip:port/path?name=xxx&pw=xxx。 当我们想使用iframe来展示这个地址的时候,出现以下现象错误: 并且控制台报错: Refused to frame 'http://10.65.78.23:30002/' because an ancestor violates the following Content Security Policy directive: "

dong__xue的博客 4万+

QQ登录IEiframesessioncookie失效问题解决方案

情景:webQQ登录,使用的是站点iframe弹窗登录,发现只有在IE浏览器下,登录存储session起作用,一刷新页面就登出 分析:IE限制第三方session/cookie 随着IE版本的断更新,版本之间变化很大,其兼容性问题困扰着许多开发者。本问题例外,IE7以后,微软逐渐改进了IE安全性,其中默认设置下第三方sessioncookie允许使用的,这就造成了使用i

qq_33538862的博客 1039

iframe 内嵌页面 JavaScript 写 cookie 失败解决方法

iframe 的场景下,无论是服务器,还是内嵌的页面,如果要写入 Cookie,都需要增加Secure;转载请注明出处。本文地址: iframe 内嵌页面 JavaScript 写 cookie 失败解决方法 - 前端路迹。

jayccx的专栏 1万+

java session iframe_解决iframejsessionid无法传递导致session丢失的问

在实现 ISMP2.1.1 接口的适合需要用到sso,而ISMP里定义的接口是需要在iframe等嵌入页面中调用sso接口,在实际开发中发现session无法正常传递。重现问题的场景是:test.jsp的代码为: 618119.comsso.jsp里读取传递的ssoinfo,反向调用ISMP认证接口,生成session,然后放入指定的属性值,session.setAttribute(”ssoUse...

weixin_35943776的博客 1398

解决iframe嵌套URL拼接;jsessionId,每次请求sessionId一样问题

【代码】解决iframe嵌套URL拼接;jsessionId,每次请求sessionId一样问题

qq_41101749的博客 1044

iframe 内嵌的第三方网站 cookie 失效,解决办法

iframe 内嵌第三方网站 cookie 失效,解决办法 打开chrome浏览器,地址栏输入chrome://flags/ 解决方案: 方案1. 将SameSite属性值设为None, 同时将secure属性设置为true。且需要将后端服务名必须使用https协议访问; 方案2. 由于设置SameSite = None,有SCRF风险。所以,最佳方案是用token代替Cookie方式作验证; ...

智造编程 7136

页面嵌入iframe Cookie丢失问题解决

自身页面以iframe的形式嵌入三方页面中,双方一致导致自身页面的cookie被某些浏览器拦截无法正常被保存到客户端。

花开的博客 4827

iframecookie丢失

利用iframe引入另外一台服务器的页面时,当引入登陆页时,登陆会导致token存储失败,可以利用localstorage去存储解决掉

asdfghkhh的博客 2798

iframe 内嵌第三方网站 cookie 失效,解决办法

iframe 内嵌第三方网站 cookie 失效,解决办法 网站iframe内嵌第三方带登录页的网站时,在ie火狐部分谷歌浏览器是可以的,但是在升级版的谷歌浏览器中是无法访问的 问题是谷歌浏览器在Chrome80后提示限制第三方cookie问题 解决方案: 方案1. 将SameSite属性值设为None, 同时将secure属性设置为true。且需要将后端服务名必须使用https协议访问; 方案2. 由于设置SameSite = None,有SCRF风险。所以,最佳方案是用token代替Cookie

weixin_44493841的博客 7156

为什么iframe里的网页能获取cookie

对于旧版Internet Explorer浏览器(已再主流支持),iframe内的网页可能需要遵循P3P(Platform for Privacy Preferences)隐私策略声明才能读取或写入cookie。当iframe加载的是与主页面同源的网页时,由于同源策略的限制,iframe内部网页通常无法访问主页面的cookie,反之亦然。如果iframe加载的是第三方站点,浏览器可能会阻止iframe从顶级上下文中读取或写入cookie,特别是当涉及到用户隐私安全时,这种限制更为严格。

ivan5277的博客 6636

最近遇到的问题:chorme浏览器中嵌入的iframe cookie起作用

开发过程中遇到的问题

与世无争的小垃圾 2345

PHP网站在Iframe登录无效,cookiesession失效导致

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

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

Iframe内嵌Cookie传递丢失问题的解决方法

问题特征:        在系统1中(名a.com)iframe嵌入系统2的页面(b.com),那么内嵌的页面(所属b.com)在跳转的过程中会丢失Cookie。   问题原因:       在frameset里面,也就是里面的frame是来自第三方站点(同IP或名),那么默认情况下IE会自动禁用这些站点的cookie,也就是在请求某url时在HTTP header里发送它们的coo...

乱七八糟 4574

华为公司研发部门绩效考核制度.doc

华为公司研发部门绩效考核制度.doc

上一篇: 软件测试及Bug管理经验谈
下一篇: 一些技术的总结整理(不断追加中)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值