Falha ao executar ‘postMessage’ em ‘DOMWindow’: https://www.youtube.com! == http: // localhost: 9000

Esta é a mensagem de erro que recebo:

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://www.youtube.com') does not match the recipient window's origin ('http://localhost:9000'). 

Vi outros problemas semelhantes nos quais a origem do destino é http://www.youtube.com e a origem do destinatário é https://www.youtube.com , mas nenhum como o meu, onde o destino é https://www.youtube.com e a origem é http://localhost:9000 .

  1. Eu não entendi o problema. Qual é o problema?
  2. Como posso consertar isso?

Eu acredito que este é um problema com a origem do alvo sendo https . Eu suspeito que seja porque o seu URL do iFrame está usando http vez de https . Tente alterar o URL do arquivo que você está tentando incorporar para ser https .

Por exemplo:

 var id = getId(url); return '//www.youtube.com/embed/' + id + '?showinfo=0&enablejsapi=1&origin=http://localhost:9000'; } 

ser estar:

 var id = getId(url); return 'https://www.youtube.com/embed/' + id + '?showinfo=0&enablejsapi=1&origin=http://localhost:9000'; } 

Definir isso parece resolvê-lo:

  this$1.player = new YouTube.Player(this$1.elementId, { videoId: videoId, host: 'https://www.youtube.com', 

Você pode salvar em arquivos locais:

No primeiro arquivo, o player_api coloca este código:

 if(!window.YT)var YT={loading:0,loaded:0};if(!window.YTConfig)var YTConfig={host:"https://www.youtube.com"};YT.loading||(YT.loading=1,function(){var o=[];YT.ready=function(n){YT.loaded?n():o.push(n)},window.onYTReady=function(){YT.loaded=1;for(var n=0;n 

Em segundo, encontre alguns como: this.a.contentWindow.postMessage (a, b [c]);

e mude para:

 if(this._skiped){ this.a.contentWindow.postMessage(a,b[c]); } this._skiped = true; 

Claro, você pode concatenar em um arquivo - será mais eficiente. Esta não é uma solução perfeita, mas funciona!

Minha fonte: yt_api-concat

PS: Desculpe, o inglês não é meu primeiro idioma.

Basta adicionar o parâmetro "origin" com o URL do seu site no atributo paramVars do player, assim:

 this.player = new window['YT'].Player('player', { videoId: this.mediaid, width:'100%', playerVars: { 'autoplay': 1, 'controls': 0,'autohide':1,'wmode':'opaque','origin':'http://localhost:8100' }, } 

Eu acho que a descrição do erro é enganosa e tem originalmente a ver com o uso errado do object jogador.

Eu tive o mesmo problema ao mudar para novos vídeos em um Slider.

Quando simplesmente usar a function player.destroy() descrita aqui, o problema desapareceu.

Tente usar window.location.href para que o URL corresponda à origem da janela.

Eu tive o mesmo problema e foi porque eu tinha a extensão do Chrome “HTTPS Everywhere” em execução. Desativar a extensão resolveu meu problema.

Esse erro exato estava relacionado a um bloco de conteúdo do YouTube quando “reproduzido em determinados sites ou aplicativos”. Mais especificamente pelo WMG (Warner Music Group).

No entanto, a mensagem de erro sugeriu que uma importação de iframe https para um site http era o problema, o que não era nesse caso.

Eu tenho o mesmo erro. Meu erro foi que o parâmetro enablejsapi=1 não estava presente no iframe src.

A remoção da pré-busca de DNS resolverá esse problema.

Se você estiver usando o WordPress, adicione esta linha nas funções do seu tema.php

 remove_action( 'wp_head', 'wp_resource_hints', 2 );