iframe 的安全错误

Security Error with iframe

以下问题出现在 Android 4.4 及更高版本的设备中。

这是我们的 iframe 的样子:

<iframe frameborder=0 id="myIFRAME"></iframe>

以下是我们以编程方式获取 iframe 的方式:

if(document.getElementById("myIFRAME")){
        me.setMyIFRAME(document.getElementById("myIFRAME").contentWindow);
}

这导致了与协议不匹配相关的安全错误:

"Uncaught SecurityError: Blocked a frame with origin "https://www.google.com" from accessing a frame with origin "file://". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "file". Protocols must match.

我们正在使用 Sencha touch 和 Cordova 来开发我们的项目。

Cordova security guide 说:

If content is served in an iframe from a whitelisted domain, that domain will have access to the native Cordova bridge.

您是否尝试过在 config.xml 中添加外部域 to the whitelist

<access origin="https://google.com" />

@Ritika,
我在这里大胆猜测,因为我不使用 iframe,但在您的 <iframe> 元素中我没有看到 src。因此,系统将其设置为某种类型的默认值,并且该源的协议是 file://

我认为如果您设置 src=,即使是空白,问题也会消失。

离开,只是一个猜测。祝你好运。

  1. Google 无法通过 iFrame 访问。

  2. 默认情况下,使用 file:// 协议的页面无法通过 http://https:// 协议访问资源。

就个人而言,我会完全避免使用 iFrame。

https://github.com/phonegap/phonegap/wiki/iFrame-Usage

事实证明,iframe 正在加载 html 页面,该页面正在访问 window.document,这导致了跨域安全错误 下面如果条件在页内

 if (window.parent.document != window.document) 

我们将其更改为以下解决安全错误的条件

if (window.parent != window)