前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IE中iframe跨域访问

IE中iframe跨域访问

作者头像
高爽
发布2017-12-28 14:53:15
4.2K0
发布2017-12-28 14:53:15
举报
文章被收录于专栏:高爽的专栏

1      什么叫跨域?

       指在A系统(第一方)中通过URL直接调用B系统(第三方),并且两个系统分别部署在不同的域内,简单的理解就是访问这两个系统需要不同的IP。后面说明也已A系统、B系统为例。

2      跨域会引发什么问题?

       在IE中,A系统中的iframe或者frame跨域访问了B系统一个资源时,IE浏览器默认设置是禁用第三方Cookie的,这就导致向B系统发送请求时丢失了JSESSIONID,从而B系统服务器中就无法得到session对象,就会引发一系列问题。关于Cookie和session的关系,可以看前一篇文章Session深度解析,这里不再赘述。

       IE中如此处理可能也是出于安全考虑,经测试,在Chrome、FireFox中默认是允许第三方Cookie的,也就不会存在跨域引发的问题。这种跨域的情况通常出现在多个系统间互相嵌入某些功能。

3      如何解决?

       解决方案可以分两个方面,一种是客户端(需要访问A系统的浏览器)处理,另一种是服务端(B系统)处理。

3.1  浏览器

3.1.1  放弃IE

       那是不可能的。

3.1.2  允许第三方Cookie

       工具 - Internet选项 - 隐私 - 高级 - 勾选替代自动cookie处理 - 确定。

3.1.3  设置可信站点

       访问A系统前,将B系统的IP添加到可信站点中,这样设置能比接受第三方Cookie安全些。

       工具 - Internet选项 - 安全 - 受信任的站点 - 站点 - 添加 - 确定。

3.2  服务器

3.2.1  可以被集成的模块不需要Session

       局限性太大。

3.2.2  P3P协议

       在B系统中允许被跨域访问的功能模块中加入P3P响应头,response.setHeader("P3P","CP=CAOPSA OUR");,记住是B系统中加,不是A系统。

       关于P3P的介绍可以看这篇文章http://www.cnblogs.com/_franky/archive/2011/03/16/1985954.html

       (完)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-10-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1      什么叫跨域?
  • 2      跨域会引发什么问题?
  • 3      如何解决?
    • 3.1  浏览器
      • 3.1.1  放弃IE
      • 3.1.2  允许第三方Cookie
      • 3.1.3  设置可信站点
    • 3.2  服务器
      • 3.2.1  可以被集成的模块不需要Session
      • 3.2.2  P3P协议
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档