【问题标题】:YouTube scripts - Failed to execute 'postMessage' on 'DOMWindow' [duplicate]YouTube 脚本 - 无法在 \'DOMWindow\' 上执行 \'postMessage\' [重复]
【发布时间】:2022-10-19 12:18:07
【问题描述】:

在 PrestaShop 中,我使用了一个嵌入 YouTube 视频的模块,例如:

<iframe width="560" height="315" frameborder="0" iv_load_policy="3" fs="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" data-src="https://youtube.com/embed/VIDEO_ID?rel=0&amp;controls=0&amp;showinfo=0&amp;modestbranding=1"></iframe>

一切似乎都正常/视频正在播放 - 但在浏览器控制台中我看到以下错误:

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

在我花了很多时间在 SOO 上搜索和阅读所有类似问题之后,这个问题与 CORS 或类似问题无关。大多数报告此问题的人声称这是由于 YouTube 视频的加载方式,包括。参数等...我尝试了多种方法-但我没有成功消除此错误。我希望你们有办法在 2022 年解决这个问题。

【问题讨论】:

  • 在副本中,this answer 看起来最适合您的具体情况。
  • 我的英雄!谢谢你救了我更多的头痛! :) 创建一个答案我的朋友!
  • Gregory Magarshak 已经写下了答案。点赞!

标签: javascript youtube postmessage youtube-iframe-api


【解决方案1】:

您可能会考虑将 X Frame-options 添加为您网站的 url youtube.com。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options

【讨论】:

  • 问题是关于在 iframe 中显示 YouTube。如果X-Frame-Options 可以提供帮助,则需要更改 YouTube 返回的标头,而 OP 将无法访问这些标头。 X-Frame-Options 在这里无能为力,因为问题不在于文档没有显示在框架内,而是它运行的 JS 试图以不兼容的方式跨域工作。此外,根据您链接到的页面上的蓝色框,X-Frame-Options 已被 CSP 淘汰。
猜你喜欢
  • 2018-05-29
  • 2018-11-24
  • 2016-12-11
  • 2018-05-27
  • 2019-11-05
  • 2018-05-30
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多