2017-12-25 40 views
8

크롬 확장 프로그램을 개발 중이며 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 
    } 
}); 
}; 

나는 playerVars의 기원과 wmode을 추가했다. 그러나 그들은 효과가 없었습니다.

나는

+0

나는 지난 주말에이 문제에 대한 해결책을 찾기 위해 노력했지만, 모든 헤더 요청은 블록을 발생시키는 원인이되는 원래 위치로 되돌아갑니다. – simon

+1

나는 이것이 가능하다고 생각하지 않는다. 문제는 iframe을 임베드 할 때 http 리퍼러가 브라우저 자체에서 설정된다는 점입니다. 그렇지 않으면 보안 위반이됩니다. 누군가가 기꺼이이 문제를 해결할 수 있다면 기쁘게 생각합니다. 현상금을드립니다. – simon

+0

그들은 아마도 iframe에로드하지 못하도록 프레임 바스 터링 헤더를 사용하고 있습니다. – charlietfl

답변

5

나는 유튜브 API 문서에 제공된 예제를 사용하여 W3 스쿨 ' "Try it yourself을"의 VEVO 비디오를 재생 관리 임베드 유튜브 플레이어 (iframe이)와 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 업 로더는 youtube 외의 다른 웹 사이트에 비디오가 삽입되는 것을 거부 할 수 있습니다.이 경우에는 아무 것도 할 수 없습니다.

+0

오류는 여기에 있습니다. 이 동영상에는 VEVO의 콘텐츠가 포함되어 있습니다. 특정 사이트 또는 응용 프로그램에서 재생이 제한됩니다. YouTube에서보기 –

+0

w3schools에서이 작업을 수행하면 헤더의 리퍼러가 'w3schools'로 표시됩니다. 이 작업을 로컬에서 수행 할 때 로컬 호스트에 매핑됩니다. 로컬 호스트는 흰색 또는 블랙리스트에있을 가능성이 큽니다. – simon

+0

예 ... VEVO에서 가능한 한 많이 콘텐츠를 제한하는 바보가 될 것입니다. Chrome에서 리퍼러 헤더를 스푸핑 할 수있는 방법을 찾지 못하면 새 탭에서 전체 YouTube 페이지를 열어야합니다. 이는 원하는 내용이 아닐 수도 있습니다. – BoffinbraiN