【回归】允许的 src 域名下的 iframe 嵌入已损坏

您好,我已经将 https://www.tickcounter.com 添加到我的 allowed_iframes 中,但此脚本仍然不显示:

`

`

据我所见,错误日志中没有任何内容。

来自另一个允许的 src 域的完全相同的嵌入式 iframe 也失败了。

上次尝试时,大约在 6 个月到 1 年前,来自同一 src 域的完全相同的嵌入式 iframe 曾经成功过。现在我使用的是 Discourse v3.3.1 +5(稳定分支)。

在最新版本的 tests-passed 分支上,iframe 可以正常嵌入。请注意,您设置的 styletitle 属性将被 Discourse 剥离。但是,您可以设置 widthheight 属性。例如:

<iframe src="https://www.tickcounter.com/widget/countdown/5847336" width="100%"></iframe>

当您导航到帖子然后打开浏览器开发者工具的“Elements”选项卡时,您看到了什么?

如果在开发者工具中打开“Console”选项卡,又会怎样?有任何错误吗?

:thinking: 嗯。对我来说,这似乎也按预期工作。

admin - all site settings - allowed iframes

previewer:

cooked post:

1 个赞

非常感谢您的回复。

<div> class="regular contents"><div> class="cooked"></div ><section class="post-menu-area clearfix"><nav class="post-controls expanded">

嗯,有一些错误:

Failed to load resource: net::ERR_CONNECTION_REFUSED
beacon.min.js:1

但这似乎是我正在使用的 DNS 黑名单。当我通过 VPN 连接时,没有错误。而且,另一个拥有完全不同计算机和网络的用户的最初向我报告的这个问题与此完全相同,这似乎并非巧合。

好的,Firefox 向我显示了另一条控制台消息:

“由于“https://www.tickcounter.com/widget/countdown/4471981”是在第三方上下文中加载的,并且启用了动态状态分区,因此向其提供了分区 cookie 或存储访问权限。”
[了解更多]

我还应该提到,我将 iframe 代码粘贴到一个骨架静态 HTML 文件中并在浏览器中打开它,它正确加载了 iframe。

好的,这个 iframe 以前对您来说是有效的……您是否在使用 Cloudflare?如果是,也许可以看看禁用 Speed Brain 功能是否会有所帮助?(如果已启用)我知道这是一个相对较新的功能。

2 个赞

您好,不,我没有使用 Cloudflare。

2 个赞

是的,我可以让 iframe 工作。有什么东西在阻止它在你的论坛上工作。

嗯,是的,看起来是这样。但 Discourse 不应该在 /logs/ 中有错误吗?

我没有在服务器上运行任何我认为会阻止这种情况的东西。我之前在 /etc/resolv.conf 中使用了托管提供商的 DNS,然后尝试将其切换到 8.8.8.8,但这个问题没有改变。

仅当它导致错误时。某些东西可能正在阻止它,这是为了正常运行。我想知道在它停止工作时是否/有什么改变了。我想知道内容安全策略 (Content Security Policy) 的更改是否会影响它。

你似乎说你正在使用一个 DNS 阻止列表,而它导致了问题,所以不要使用它?

2 个赞

您是否将


https://www.tickcounter.com/ 添加到允许的 iframe 设置中?

3 个赞

它是一个阻止具有不良声誉的域的 DNS 服务。但那不是问题,因为 1) 当我通过 VPN 连接时,它会使用不同的 DNS,而这个问题仍然存在,2) 向我报告此问题的用户正在使用完全不同的设置,3) DNS 配置仅适用于我的 LAN,而不适用于 Discourse 服务器,而 Discourse 服务器未能正确生成服务器端 HTML,4) 此 HTML 文件正确加载了 iframe:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta name="description" content="Webpage description goes here" />
  <meta charset="utf-8">
  <title>Change_me</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta name="author" content="">
</head>

<body>

<div style="left:0; width:100%; height:0; position:relative; padding-bottom:25%; margin:0 auto">
<iframe src="https://www.tickcounter.com/widget/countdown/5847336" style="top:0; left:0; width:100%; height:100%; position:absolute; border:0; overflow:hidden" title="My countdown"></iframe>
</div>

</body>
</html>

哦,天哪,就是那个,它缺少最后的 /
非常感谢!

Discourse 中有些东西改变了,因为我上次尝试此操作时添加了 https://www.tickcounter.com,而那时它奏效了。在我看来,要么是它使用的正则表达式逻辑,要么是设置的描述需要调整,因为它说:

Discourse 可以安全地允许帖子中的 iframe src 域前缀列表

当我想到“域前缀”时,我会想到域名和/或子域,它们都不包含 /。或者,如果它应该使用更精确的逻辑来处理复杂的 iframe src URL,那么它应该说类似的话:

Discourse 可以安全地允许帖子中的 iframe src URL 前缀列表

3 个赞

当你添加链接时,字段下方应该会显示一个错误消息,提示你需要另一个斜杠

3 个赞

2 个月前添加的链接(在安全修复合并之前)是问题所在,当时您没有收到错误消息,甚至默认链接也不包含第三个“/”。
这至少是第二个因此类问题而产生的支持主题

3 个赞

是的,我一直在想是不是这种情况——现有的链接在某个环节断了。:thinking:

1 个赞

是否可以检查现有输入并通知管理员不再有效的链接?

3 个赞

对我来说,最大的困惑之处在于,它被称为“域名”,但实际上它是一个 URL。

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.