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


Cross domain/protocol iframe with access to both servers and modern features

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

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

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

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

为了回答我自己的问题,经过几个小时的努力,发现当父文件是https,子文件是http时,不可能注入JS文件。

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

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

在那之后,postMessage的东西在不同的协议上都很好地工作,没有额外的工作!