我有一个嵌入YouTube视频的问题

我无法嵌入 YouTube 视频

2 个赞

这是我的话题链接

您有什么问题?

1 个赞

1 个赞

有什么办法解决这个问题吗?有什么设置会直接与此相关吗?

它是否在安全模式下发生?浏览器有错误吗?谢谢。

我尝试了一切,但都没有奏效
我网站上的所有 YouTube 视频都无法正常播放,并出现此错误

@hameedacpa,你还没有……为了证明这一点,这似乎在别处已经解决了:

你是否已经尝试过任何在线解决方案?

1 个赞

我不认为这与我的情况有关

1 个赞

@hameedacpa,为什么?这是相同的错误代码。

抱歉,我尝试了推荐的解决方案,但它不起作用,我认为是内部问题

1 个赞

不确定这是否相关,但我看到很多 cookie 被阻止。

另外,控制台中没有错误,在安全模式下仍然发生…

@hameedacpa 考虑将 https://youtube.com/ 添加到 allowed_iframes 设置中?不确定这是否有帮助。

1 个赞

我做了这个但没有好处

希望这能帮助到 OP 的抱怨 +1。在没有任何更改的情况下(我在稳定分支上),即使点击播放曾经可以正常播放的现有视频,我也会遇到同样的错误:

我尝试过通过手机、绕过公司防火墙、禁用 Cloudflare。仍然没有解决。

在这里测试时,编辑器中出现错误,但在论坛中显示正常:

更新:

我找到了这篇文章,其中提到 YouTube 最近收紧了其政策,因此新的嵌入代码现在包含 referrerpolicy=“strict-origin-when-cross-origin” 以及更新的 allow 属性:

没有这些,YouTube 将拒绝来自 iframe 的配置请求,您将看到错误 153。

3 个赞

我通过 Cloudflare 解决了这个问题,直到官方补丁发布为止。

对于遇到同样问题的任何人,原因是 YouTube 现在会拒绝缺少有效 Referrer-Policy 标头的嵌入请求。

我通过 Cloudflare 的转换规则添加了一个 Referrer-Policy 标头(无需 Workers)。

我所做的如下:

  1. 在 Cloudflare 中,转到规则 → 转换规则 → HTTP 响应标头修改。

  2. 创建一个新规则,选择所有传入请求,然后添加一个静态标头:

    Header name: Referrer-Policy
    Value: strict-origin-when-cross-origin
    
  3. 部署规则。

一旦打上补丁,我就会删除它。

2 个赞

非常感谢大家!
我发现问题出在 vhost 文件中应进行的以下更改:
以下内容来自 ChatGPT:

1 个赞

:thinking:

据我所知,Discourse 的工作方式是,你在该容器内所做的 Nginx 更改将在下一次 ./launcher rebuild app 或通过 UI 升级时被清除。

如果你希望此更改得以保留,你不应该在正在运行的 Discourse 容器内进行编辑。而应该在 /var/discourse/containers/app.yml 中进行更改,以便在重建和更新时得以保留。

添加后,你可以重建:

./launcher rebuild app

并非每个人都使用 Cloudflare,但这就是我选择 Cloudflare 来解决此问题的原因。无需重建,只是一个临时的解决方法。

由于安全标头的工作方式是浏览器会优先处理最后收到的标头,因此有效。

这只是最快、侵入性最小的解决方案,可以使事情正常运行。但如果你在容器内进行操作,请记住每次重建或更新 Discourse 时都必须重新进行。:slight_smile:

3 个赞

我正在使用带有 Vhost 的 CloudPanel,并根据 ChatGPT 的建议修改了之前的解决方案,如下所示:

2 个赞

几个月前我们也遇到了同样的问题,但只影响了 3 位用户。我们的主机管理员不在,没有人可以访问主机设置,我们想出了这个办法:

编辑主题并在 <HEAD> 中添加此内容:

<meta name="referrer" content="strict-origin-when-cross-origin">

4 个赞

您的解决方案适用于此元标记

<meta name="referrer" content="strict-origin-when-cross-origin">