安装 HTML 脚本时遇到问题?

我在论坛安装 Pure Chat 脚本时遇到了问题,因为 Discourse 启用了白名单过滤以进行安全保护。我尝试将几个 Pure Chat 链接添加到白名单中,但 Pure Chat 的对话选项卡仍然无法显示。恳请协助,以下是错误信息:

legacy.111147.js:1 Uncaught EvalError: Refused to evaluate a string as JavaScript because ‘unsafe-eval’ is not an allowed source of script in the following Content Security Policy directive:

at new Function (<anonymous>)
at Function.b.template (legacy.111147.js:1)
at Module.<anonymous> (legacy.111147.js:32)
at n (legacy.111147.js:1)
at Object.<anonymous> (legacy.111147.js:32)
at n (legacy.111147.js:1)
at legacy.111147.js:1
at legacy.111147.js:1

有人知道如何解决这个问题吗?如果我不启用 CSP,脚本就能正常运行。但如何既能启用 CSP 又能让脚本正常工作呢?

1 个赞

将您的脚本源添加到设置 content security policy script src 中。

我在控制台标签页看到这些错误链接后就添加了它们:slight_smile:

但问题仍然无法正常运行。

1 个赞

您使用此功能的方式有误,只需将域名加入白名单,而无需逐个添加每个 URL。

@tshenry,这里的文案或许需要优化一下?

2 个赞

谢谢您的帮助,我会再次尝试修改。

1 个赞

但问题依然存在,即使启用了 CSP,PureChat 脚本也无法显示,尽管我已经添加了两个新链接。

1 个赞

完全坦白——我不认为自己是个 CSP 专家!

尽管如此,我认为有些场景下白名单整个域名是最理想的,而另一些场景下则更适合针对单个脚本进行配置。我相当确定这取决于你需要白名单的脚本数量、你是否信任该来源等因素。我会在指南中补充一条说明,提到在必要时可以使用域名作为通用覆盖方案。

提供的截图中显示的设置确实有点过度了,但我猜那只是为了覆盖所有情况而做出的尝试,因为当时没有任何东西能正常工作。

我刚刚在测试站点上尝试添加了 Pure Chat 作为实验。我可以通过哈希值在 Chrome 上使其运行,但这对于 Safari 和 Firefox 来说还不够。我向 Penar 咨询过,这似乎确实是那种不幸的情况,需要像以下引用中提到的那样使用 'unsafe-inline'


@BishopV 如果你选择继续使用 Pure Chat,我认为你唯一的选择就是删除该设置中的所有条目,并添加 'unsafe-inline',但这会以牺牲安全性为代价。

你有没有考虑过使用 Setup HubSpot chat Integration 中的 HubSpot 聊天集成?该方案似乎与我们的 CSP 策略配合得非常完美。

2 个赞

无论如何,最糟糕的结果是有人将来自同一域名的 20 个唯一 URL 硬编码进去……

2 个赞

感谢你的帮助,我想 HubSpot 现在是我的解决方案了。我很高兴选择 Discourse 作为我的后端,这里有很多帮助和支持。

3 个赞

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