问题来源:
何为跨域跨域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头
输入头内容:CP=CAO PSA OUR
点评:与上一个方法类似,此方法也要求第三方在可控可管理。
相关推荐
iframe 跨域访问session问题解决方法
何为跨域跨域session/cookie? 也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的...
主要介绍了前后端分离 vue+springboot 跨域 session+cookie失效问题的解决方法,解决过程也很简单 ,需要的朋友可以参考下
【ASP.NET编程知识】iframe跨域与session失效问题的解决办法.docx
本篇文章小编将为大家介绍,关于Iframe如何跨域访问Cookie和Session的解决方法,有需要的朋友可以参考一下
该文档介绍了vue和普通web页面中iframe实现跨域的解决方案,解决了主页面中无法调用iframe方法的问题
解决springboot实现跨域session共享问题,防止sql注入。可以更有效的解决token问题,欢迎下载,有问题可以再评论下方留言,及时解答!!加群:687942640
NULL 博文链接:https://hqlly.iteye.com/blog/1662337
框架完美解决了iframe之间的跨域通讯。底层技术采用window.name转换代理实现
这是关于iframe使用过程中出现的问题整理的解决方法,关于使用iframe不用单独写接口打通数据,直接把数据通过ifarme嵌套方法传递过去,使用简单方便。
iframe跨域问题:Uncaught DOMException Blocked a frame with origin解决方法
今天搞的一个登录页面,被别的网站用iframe嵌进去后,死活无法登录(只在IE中存在这种情况)。 很明显,session无法被保存。但是直接在地址栏打开那个登录页面,一切都正常啊。真是奇怪啊。 在网上搜索了一下。发现...
NULL 博文链接:https://thoreau.iteye.com/blog/745100
通过HTTPClient界面在JSP中嵌入iframe子界面跨域时,无法获取跨域界面的属性值的问题
以前在面试的时候经常遇到问关于跨域的事儿,所以自己对跨域有一定的概念性了解,知道什么是跨域以及解决跨域的方法,但是具体实际从来没有操作过,直到最近在公司项目中,遇到了一个需要使iframe跨域进行POST提交的...
在web开发中,跨域问题是经常遇到的,但是由于浏览器同源策略的限制,不同域之间属性和操作是无法直接交互的。本次讨论iframe和父页面的消息通信。
iframe 跨域 自动适应高度;iframe 跨域 自动适应高度;