嵌入的YouTube代码无法在HTML中使用

Pea*_*yun 2 html

我正在尝试在HTML中使用嵌入的youtube代码,但是当我按播放按钮时,它说“该视频不可用”。我正在使用以下HTML代码:

<iframe width="560" height="315" src="https://www.youtube.com/embed/JfJYHfrOGgQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

谁能帮我这个忙吗?我也尝试了其他嵌入的youtube视频,但仍然说了同样的话。我正在使用Chrome。

在此处输入图片说明

c1u*_*355 15

对我来说,这是由我网站上的推荐人政策“无推荐人”引起的。Youtube 似乎在设置 no-referrer 时阻止嵌入。

希望能救人免于浪费时间。


小智 10

TL; 博士

Youtube 只允许 https 页面使用嵌入/iframe 进行流式传输。

确保视频所有者允许嵌入。

设置限制较少的引荐来源政策,例如“no-referrer-when-downgrade” ,以允许 youtube 知道请求的来源。在 django 中,您可以通过添加以下行来做到这一点settings.py

SECURE_REFERRER_POLICY = "no-referrer-when-downgrade"
Run Code Online (Sandbox Code Playgroud)

长读:

如果您最近在 django 应用程序中遇到此问题,可能是因为 django 3 中的引用策略最近发生了变化。在此处阅读更多

当您为 youtube 视频添加 iframe 时(假设视频所有者允许嵌入),引荐来源(播放视频的主机来源)通过 iframe 内的脚本发送到 youtube(嵌入 url 获得新的带所有必需脚本的页面)。如果服务器正在设置阻止有关引荐来源的通信的引荐来源政策,则 youtube 会拒绝播放请求并以 204 - 无内容进行响应。

从 django v3.x 开始,referrer 策略默认设置为“same-origin”,这太严格了,无法让 youtube 知道来源。在这种情况下,youtube 不允许播放视频并以代码 204 进行响应。

这可以通过设置限制较少的引用策略来解决。您可以使用"no-referrer-when-downgrade"。在 django 中,您可以使用settings.py文件中的以下变量进行设置。

SECURE_REFERRER_POLICY = "no-referrer-when-downgrade"
Run Code Online (Sandbox Code Playgroud)

上述策略规定,当访问协议降级时,referrer 将作为空发送,否则源将作为referrer 发送(这是可以接受的)。鉴于此,youtube 只允许httpsorigins,在这种情况下,这意味着如果 iframe 嵌入在带有 https 的网页中,则将正确发送引荐来源网址,并且在通过此类嵌入播放 youtube 视频时不会出现问题。

  • 我一直在到处寻找如何解决我的问题,这很好地解决了我的问题。该死。 (2认同)
  • 如果您不想更改整个站点的引用策略,您还可以在 `&lt;iframe&gt;` 上使用 `referrerpolicy` 属性 (2认同)

Ahm*_*her 7

我最近遇到了同样的问题,它与视频所有者的嵌入设置无关,显然youtube禁止在没有公共域的本地主机环境中嵌入一些视频,您的视频可以毫无问题地通过公共域/子域进行嵌入,即:将@PStarczewski答案中jsfiddle中的src值替换为您的视频链接,它将正常工作

  • @Pearl Oyun,如果符合条件,请考虑将我的答案标记为已接受,谢谢 (3认同)
  • 谢谢你!这帮助我识别了问题,并且我能够在这里找到更具描述性的答案:/sf/ask/3637848861/ (2认同)

PSt*_*ski 3

YouTube 上有所谓的“嵌入设置”,视频所有者可以决定是否允许。

这是一个例子: JSFiddle

<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLsyvDWwjkTqtOmqAiTzzfHspTAztB-udL" frameborder="0" gesture="media" allow="encrypted-media" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/JfJYHfrOGgQ" frameborder="0" gesture="media" allow="autoplay; encrypted-media" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

在这里您可以找到有关此内容的更多详细信息:YouTube 限制嵌入