通过原点“file://”访问具有原点“https://www.youtube.com”的框架

问题描述 投票:6回答:4

我有一个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.

解:

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

cordova iframe youtube youtube-api youtube-iframe-api
4个回答
0
投票

@Manish,

看来你有CORS问题。你可以添加到你的config.xml <access origin="*"/>

杰西


0
投票

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

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

既然它不是CORS,你有没有摆脱iframe?如果这有效,也许你需要的是一个隐藏的<div>

杰西


0
投票

确保你已经安装了cordova-plugin-whitelist

在config.xml上添加此行

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

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

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

-3
投票

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

你的链接是这个=>“https://www.youtube.com/embed/s7gJ74ARN84

但你只需将其改为

这个链接“//www.youtube.com/embed/s7gJ74ARN84”

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

© www.soinside.com 2019 - 2024. All rights reserved.