跨域/协议iframe,可访问服务器和现代功能

时间:2013-07-19 11:54:23

标签: php apache iframe cors

我正在尝试将iframe嵌入到https网站中。嵌入的站点只能使用http协议。

我收到一个控制台错误,表示框架已被阻止,因为“请求访问的框架具有”https“协议,正在访问的框架具有”http“协议。协议必须匹配”。

一旦我有框架工作,我就想在嵌入式网站上运行代码。我认为使用postMessage框架应该为我做这个,但我不希望总是包含在嵌入页面上接收这些消息的代码,所以想在父站点上使用Javascript来注入JS文件。尝试使用contentDocument,但得到的错误是null。

没有要求支持旧版浏览器,因此只要IE10 / Chrome / Safari / Firefox最新版本能运行它,所有新的HTML5内容都很好。我可以完全访问这两个服务器,因此编辑PHP / Apache头文件很好。

1 个答案:

答案 0 :(得分:0)

要回答我自己的问题,经过几个小时的努力,事实证明,当父级是https并且孩子是http时,无法注入JS文件。

但是,一旦我放弃了这个梦想,那就很容易了!

在加载iframe之前,我从网站A向我想在iframe(网站B)中显示的网站发出一个CORS AJAX请求到一个PHP文件,该文件检查HTTP_ORIGIN值以确保正确的服务器正在访问。如果是,它在网站B上设置会话变量。然后,当我从iframe中的网站A加载网站B时,它使用会话值来知道可以包含我要注入网站B的javascript文件。

之后,postMessage的东西在不同的协议上都运行良好,没有额外的工作!