2017-12-25 17 views
8

Chrome拡張機能を開発しており、youtube-iframe-apiを使用しています。youtube-iframe-apiにリファラーを設定する方法はありますか?

下のコードで作成されたプレーヤーは、vevoなどの一部の限定(?)動画を除くすべての動画を再生できます。

function onYouTubeIframeAPIReady() { 
    player = new YT.Player('player', { 
    height: '300px', 
    width: '800px', 
    videoId: 'RhU9MZ98jxo', 
    playerVars: { 
    'origin': 'https://www.youtube.com', 
    'wmode': 'opaque' 
    }, 
    events: { 
    'onReady': onPlayerReady, 
    'onStateChange': onPlayerStateChange 
    } 
}); 
}; 

私は、彼らが問題を解決できることをいくつかの答えを見つけていたので、私は、原点とplayerVarswmodeを追加しました。しかし、彼らは働かなかった。

私は私がユーチューブのAPIのドキュメントに記載されている例を用いてW3Schoolsの中 『Try it yourselfを』 VEVO動画を再生するには、管理埋め込みユーチューブプレーヤー(IFRAME)

+0

私は、過去の週末にもこの問題の解決に取り組み、役に立たないようにしてきました。すべてのヘッダー要求は、ブロックの発生原因となっている元の場所に戻っています。 – simon

+1

これは可能だとは思わない。私は問題は、あなたがiframeを埋め込むときにhttpリファラーがブラウザ自体によって設定されることにあると考えています。そうでなければ、セキュリティ違反になります。 誰もがこの問題に対処することを喜んでいる場合、私は間違って修正されることを喜んでより多くのです。 私は賞金を設定しました。 – simon

+0

iframeでの読み込みを防ぐためにフレームバストヘッダを使用している可能性があります。 – charlietfl

答えて

5

でVEVO動画を再生することが可能であることを疑問に思って:

<div id="player"> 
</div> 

<script> 
     // 2. This code loads the IFrame Player API code asynchronously. 
     var tag = document.createElement('script'); 

     tag.src = "https://www.youtube.com/iframe_api"; 
     var firstScriptTag = document.getElementsByTagName('script')[0]; 
     firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 

     // 3. This function creates an <iframe> (and YouTube player) 
     // after the API code downloads. 
     var player; 
     function onYouTubeIframeAPIReady() { 
     player = new YT.Player('player', { 
      height: '390', 
      width: '640', 
      videoId: 'tWQPbHXyoFQ', 
      events: { 
      'onReady': onPlayerReady, 
      'onStateChange': onPlayerStateChange 
      } 
     }); 
     } 

     // 4. The API will call this function when the video player is ready. 
     function onPlayerReady(event) { 
     event.target.playVideo(); 
     } 

     // 5. The API calls this function when the player's state changes. 
     // The function indicates that when playing a video (state=1), 
     // the player should play for six seconds and then stop. 
     var done = false; 
     function onPlayerStateChange(event) { 
     if (event.data == YT.PlayerState.PLAYING && !done) { 
      setTimeout(stopVideo, 6000); 
      done = true; 
     } 
     } 
     function stopVideo() { 
     player.stopVideo(); 
     } 
    </script> 

vevo動画を再生しようとするとどうなりますか?どのようなエラーやメッセージが表示されますか?

youtube uploaderとして、youtube以外の他のウェブサイトにビデオが埋め込まれていることを拒否するオプションがあります。この場合、本当に何もできません。

+0

ここにエラーがあります。 この動画にはVEVOのコンテンツが含まれています。特定のサイトやアプリケーションでの再生が制限されています。 Watch on YouTube –

+0

w3schoolsでこれを行うと、ヘッダーのリファラーに「w3schools」とマークされます。これをローカルで行うと、localhostにマップされ、そのURLはyoutubeによって白またはブラックリストに載せられる可能性があります。 – simon

+0

ええと... VEVOでのコンテンツはできるだけ制限されているのです。 Chromeがリファラーヘッダーを偽装する方法を見つけられない場合は、YouTubeページ全体を新しいタブで開く必要があります。これはおそらくあなたが望むものではありません。 – BoffinbraiN

関連する問題