【问题标题】:Security Error with iframeiframe 的安全错误
【发布时间】:2015-09-07 11:09:45
【问题描述】:

在 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”访问具有源“file://”的框架。 请求访问的帧具有“https”协议,该帧是 访问具有“文件”协议。协议必须匹配。

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

【问题讨论】:

    标签: javascript android cordova iframe sencha-touch


    【解决方案1】:

    Cordova security guide 说:

    如果内容是在白名单域的 iframe 中提供的,则该域将有权访问本机 Cordova 桥。

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

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

    【讨论】:

      【解决方案2】:

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

      我想如果你设置一个src=,即使是一个空白,问题就会消失。

      离,只是猜测。祝你好运。

      【讨论】:

      • src 是在代码中动态创建的,然后最终在 iframe 上设置。即使我最初尝试设置 src = '',但这并没有帮助
      • 好的,在黑暗中拍摄。您是否在使用白名单、插件和 CSP?
      • 我尝试过使用whie-listing,但也没有用
      • 好的。还有几个问题可以尝试。您是否在使用备用 webview 库?像人行横道?你没说你用的是CSP吗?您使用的是哪个版本的 Cordova/phonegap 编译器?您使用的是哪个版本的插件?你试过 minSDKtargetSDK 吗?
      【解决方案3】:
      1. 无法通过 iFrame 访问 Google。

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

      【讨论】:

        【解决方案4】:

        就个人而言,我会避免一起使用 iFrame。

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

        【讨论】:

          【解决方案5】:

          原来 iframe 正在加载正在访问 window.document 的 html 页面,这导致了跨域安全错误 下面如果条件在页面内

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

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

          if (window.parent != window)
          

          【讨论】:

          • 我必须在哪里使用这个
          猜你喜欢
          • 2010-10-25
          • 2018-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多