阻止了一个有起源的框架" https://www.youtube.com"从访问带有起源的框架" file://"

时间:2015-05-18 11:42:06

标签: cordova iframe youtube youtube-api youtube-iframe-api

我有youtube的网址:

<iframe class="embed-responsive-item" ng-src="https://www.youtube.com/embed/s7gJ74ARN84" allowfullscreen=""></iframe>

如果我在我的本地html文件中使用它,它可以很好地播放。但是当我在phonegap ios app html页面粘贴相同内容并在ios模拟器中运行时,它会在我点击视频时显示以下错误:

Blocked a frame with origin "https://www.youtube.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.

解决方案:

它不是在模拟器中工作,而是在移动设备上工作,这是我的最终目标。

4 个答案:

答案 0 :(得分:0)

@Manish,

您似乎遇到CORS问题。您可以添加到config.xml <access origin="*"/>

杰西

答案 1 :(得分:0)

@Manish, 因为你已经处理过CORS问题,所以你得到的错误是:

  

请求访问的帧具有“https”协议,帧为   access具有“文件”协议。协议必须匹配。

既然它不是CORS,你有没有摆脱iframe?如果可行,也许您需要的是隐藏的<div>

杰西

答案 2 :(得分:0)

请确保您已安装cordova-plugin-whitelist

然后在 config.xml 上添加此行

<!-- Whitelist the domain -->
<allow-navigation href="https://*youtube.com/*"/>

如果要将访问所有URL的权限列入白名单,则可能要使用此功能
但是,如果您的应用程序可以通过脚本注入,则必须小心,这将是一个安全漏洞

<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />

答案 3 :(得分:-3)

嘿,这只是一个非常小的问题

你的链接是这个=&gt; &#34; https://www.youtube.com/embed/s7gJ74ARN84&#34;

但你必须将其改为

此链接&#34; // www.youtube.com/embed/s7gJ74ARN84"

请记住,当您尝试在网站中加载安全内容时,只需从链接中删除协议

即可