Youtube " заблокировал кадр с origin "http://www.youtube.com" от доступа к фрейму с origin", даже если используется тот же протокол

при встраивании плейлиста 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 ответов


по-видимому, кажется, что ошибка, данная 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 встроенный плейлист diplays playall кнопка вместо первого видео


эта проблема вполне очевидна для службы Youtube, в основном Youtube может быть доступен только через https, http сейчас не разрешен, просто измените свой "http"на " https"...вот решение