即使使用相同的协议,Youtube“阻止带原点的帧”http://www.youtube.com“访问具有原点的帧”

时间:2013-07-26 08:34:41

标签: youtube youtube-api youtube-javascript-api

嵌入Youtube播放列表时出现此错误:

Blocked a frame with origin "http://www.youtube.com" from accessing a frame with origin "http://www.mydomain.com". Protocols, domains, and ports must match.

我没有在任何地方将HTTP与HTTPS混合,所以我不知道为什么我首先得到这个错误。

我注意到最近Youtube嵌入式播放列表没有显示第一个视频的嵌入图像,只显示带有“全部播放”按钮的黑屏,我想知道这是否是由上述错误引起的。

2 个答案:

答案 0 :(得分:5)

显然,chrome给出的错误似乎是一个错误。为了通过“全部播放”按钮问题解决黑屏,我使用了Javascript API(而不是iframe),如下所示:

<!DOCTYPE html>
<html>
  <body>
    <div id="player"></div>
    <script>
      var tag = document.createElement('script');
      tag.src = "https://www.youtube.com/iframe_api";
      var firstScriptTag = document.getElementsByTagName('script')[0];
      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: '',
          events: {
            'onReady': onPlayerReady 
          }
        });
      }
      function onPlayerReady(event) {
        player.cuePlaylist({'listType':'playlist','list':'PLE2714DC8F2BA092D'});
      }
    </script>
  </body>
</html>

感谢@jlmcdonald的回答,如下所示:Youtube embedded playlist diplays playall button instead of the first video

答案 1 :(得分:-1)

这个问题对于Youtube服务非常明显,基本上Youtube只能通过https访问,现在不允许http,只需将你的'http'更改为“https”......这就是解决方案