cordovaiOS空白iframe

在我正在工作的Cordova应用程序中有一个iframe。 问题是,当testing应用程序(模拟器和设备)的iframe是空白的。 在Android上,iframe可以很好地工作。

iframe在Angular指令中dynamic加载。

在指令链接函数中,以下代码用于加载和附加iframe到指令的元素:

var iframe = angular.element('<iframe class="widget" width="' + widgetWidth + '" height="' + widgetHeight + '"></iframe>'); iframe.attr('src', url); element.append(iframe); 

我也试过用下面几行的东西:

 var iframe = document.createElement('iframe'); iframe.src = url; 

这导致像下面的东西(使用Safari Web检查器):

 <iframe class="widget" width="384" height="505" src="http://hostname/correct/uri"></iframe> 

在我的index.html文件中,我有以下设置:

 <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-eval'; connect-src * 'unsafe-eval'; object-src 'self'; style-src * 'unsafe-inline';"> 

我的cordova config.xml中也有以下几行:

 <access origin="*" subdomains="true" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> 

Safari Web Inspector中也没有错误或警告。

所以我的问题是,是否有一些技巧让iFrames在cordova的iOS应用程序,我失踪了。 或者我现在的configuration/代码有什么问题?

我使用的是angularjs 1.5.3和jquery 2.2.1(在angularjs之前加载),以防万一。

问题是允许导航标签。 所以要解决它,我只需要把<allow-navigation href="*" />标签放到项目的config.xml文件中。

我在模拟器运行时通过xcode的输出框来到解决scheme。 有一个消息,其中包含有关iframe的url,以及有关“内部导航被拒绝”的信息。

您是否尝试过在Content-Security-Policy元标记中设置child-src和/或frame-ancestors? 这些可能需要设置为*也可以是更严格的东西,比如你正在使用的iframe源URL。

有关于此的信息在content-security-policy.com

基于您的内容安全策略的示例:

 <meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-eval'; child-src *; connect-src * 'unsafe-eval'; object-src 'self'; style-src * 'unsafe-inline';">