0

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

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

一旦框架正常工作,我就想在嵌入式站点上运行代码。我认为使用 postMessage 框架应该为我执行此操作,但我不希望始终包含在嵌入页面上接收这些消息的代码,因此希望在父站点上使用 Javascript 来注入 JS 文件。尝试使用 contentDocument 但收到一个错误,即 this 为空。

不需要支持旧浏览器,所以所有新的 HTML5 东西都可以,只要 IE10/Chrome/Safari/Firefox 最新版本可以运行它。我拥有对两台服务器的完全访问权限,因此可以编辑 PHP/Apache 标头。

4

1 回答 1

0

为了回答我自己的问题,经过几个小时的努力,事实证明,当父级为 https 而子级为 http 时,将无法注入 JS 文件。

然而,一旦我放弃了这个梦想,那就太容易了!

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

在那之后,postMessage 的东西在不同的协议上都可以正常工作,没有额外的工作!

于 2013-07-19T16:21:05.977 回答