我搭建了一个新的 Discourse,正尝试在另一个网站的页面上嵌入评论。
在 Safari 中运行时,JavaScript 控制台报出以下错误:
Unrecognized Content-Security-Policy directive 'worker-src'.
嵌入页面会显示“正在加载讨论…",持续约 30 秒。
随后我在控制台中看到:
Unrecognized Content-Security-Policy directive 'worker-src'.
Unrecognized Content-Security-Policy directive 'worker-src'.
Unable to post message to https://forum.nsscreencast.com. Recipient has origin https://nsscreencast.com.
我推测这是为了让 iframe 在内容加载后自动调整大小。但在基于 Chromium 的浏览器中运行时,我没有遇到此错误。
是否需要进行某些配置,才能让 postMessage 流程在 Safari 中正常工作?
Falco
(Falco)
2021 年6 月 1 日 18:00
2
这是我们即将修复的问题。我们依赖嵌入请求中的 Referer 来检查其是否被允许,但浏览器的近期变更打破了我们在此方面的许多假设。
感谢您的快速回复。在此期间,有什么方法可以绕过这个问题吗?例如,在嵌入网站上实现一些自定义 JavaScript?
Falco
(Falco)
2021 年6 月 1 日 18:23
4
/admin/customize/embedding 下的设置有哪些?
看起来相当基础……
它确实能工作,但第一条帖子加载时间很长,而且经常无法自动刷新。之后我才能看到“开始讨论”或实际的回复。
设置:
用户名:benscheirman
嵌入的最大帖子数:100
用于去除标题的正则表达式:“- NSScreencast$”
截断:是
导入的主题在没有回复前不列出:否
Falco
(Falco)
2021 年6 月 1 日 18:44
6
这正是我们遇到的那个 bug。它的发生是由于浏览器在处理使用 <meta> 标签在 <head> 中进行的 iFrame 刷新时存在一个古怪的问题。为了启用 CSP,我们不得不在 Extract inline JS on embedded comments by xrav3nz · Pull Request #6645 · discourse/discourse · GitHub 中引入该标签。
因此,第一个访问带有评论的博客帖子的人必须手动刷新才能看到嵌入内容,而之后的所有访问都能正常工作。我们已提出修复方案,并将在几周内合并该修复。
我想跟进一下,看看这个修复是否已合并。如果尚未合并,能否在此处提供拉取请求(PR)的链接,以便我进行跟踪?