无法嵌入某些YouTube视频,iframe会显示“该视频包含来自WMG的内容。它限制在某些网站上播放”

时间:2017-09-11 19:53:11

标签: iframe youtube youtube-api clojurescript reagent

我正在使用ClojureScript和Reagent构建即时YouTube客户端,当我尝试播放大多数音乐视频时,它目前正在http://instatube.net/,它显示错误“视频包含来自X的内容。它受限于在某些网站上播放“,但同一视频在我的本地服务器上播放得很好,iframe在两种情况下都会发送相同的引用和原始标头,当我在此处嵌入视频时它也可以正常工作https://www.w3schools.com/html/tryit.asp?filename=tryhtml_default 我不明白这是什么问题,这是我的iframe试剂组件

[:iframe {:class "embed-responsive-item"
          :allow-full-screen "allowfullscreen"
          :frame-border 0
          :auto-play 1
          :src (str "https://www.youtube.com/embed/" (if (nil? videoId) 
          "SW-BU6keEUw" videoId) "?autoplay=1&enablejsapi=1")}]]

这是我发送给YouTube搜索API v3的ajax请求 cljs-AJAX

(fn [term]
  (ajax/GET
    "https://www.googleapis.com/youtube/v3/search"
    {:params {:q term
              :maxResults 5
              :part "snippet"
              :type "video,playlist"
              :key YOUTUBE_API_KEY}
    :handler handle-youtube-resonse
    :response-format (ajax/json-response-format {:keywords? true})
    :headers {:referer "https://www.youtube.com/"
              :x-spf-referer "https://www.youtube.com/"}))

1 个答案:

答案 0 :(得分:1)

SO post中也遇到了相关错误。

  

某些视频应用了域级白名单或黑名单   他们。这是由内容所有者自行决定的。

     

如果有白名单或黑名单,以及该域名   嵌入网站无法确定(也许是因为没有   然后,在您的本机应用程序的情况下,一个真正的引用域)   默认行为是阻止播放。

     

此博客文章还有更多细节:   http://youtube-eng.blogspot.co.uk/2011/12/understanding-playback-restrictions_28.html

另一个答案也有一点,如果您尝试从应用程序而不是网页请求列入黑名单的视频,您将收到以下错误消息:

"This video contains content from ___. It is restricted from playback on certain sites."

您被错误列入黑名单。检查this answer in a SO post以解决此问题。

  

您需要提供包含来源的Youtube API请求。

     

在Youtube视频的请求标题中,将 Referer 设置为您打算从中进行呼叫的域,(例如,应用程序相应网站的域名)。如果你没有   一个域,你可以轻松地写一些其他域,这可能   也工作。

     
      
  • 对于Android(Java),您可以看到示例here
  •   
  • 对于iOS,look above
  •   
  • 对于React Native,您可以使用域中origin道具origin道具<!DOCTYPE html> <html> <body> <h2>My First Web Page</h2> <p>My First Paragraph.</p> <p id="demo"></p> <script> document.getElementById("demo").innerHTML = 5 + 6; </script> </body> </html> mentioned in the docs但不告诉您   你很喜欢它。)
  •   浏览器中的同一问题的
  • Here is another example,当扩展程序阻止Referer标头被发送以进行良好测量时。
  •   
     

注意:此答案适用于Youtube的V3 API。