david
(David Taylor)
1
我们经常看到用户尝试向主题添加外部 JavaScript 引用时提交的支持主题。默认情况下,内容安全策略(CSP)会阻止此类操作,管理员必须手动将脚本添加到 CSP 站点设置(或主题设置/修饰符)中。
不过,@Johani 提出了一个出色的改进建议。
与其让主题开发者在管理界面中手动复制粘贴,我们可以自动完成这一过程。我们可以解析主题中的所有 HTML,提取任何外部脚本的 src 属性,并将其添加到 CSP 中。
毕竟,计算机在执行重复性复制粘贴任务方面远比人类高效!
我已提交了一个实现该功能的 PR:
https://github.com/discourse/discourse/pull/9531
15 个赞
pmusaraj
(Penar Musaraj)
2
我在本地环境中看到了一些控制台错误:

在生产环境中,我还看到以 https://CDN_SERVER/theme-javascripts/31657759d037d8c06397e9965a1113169100846e.js... 格式添加的源,这是多余的,因为策略已经允许了 https://CDN_SERVER/theme-javascripts。是否可以将自动扩展限制为仅适用于外部脚本源?
6 个赞
david
(David Taylor)
4
感谢 @pmusaraj,我添加了一些额外的检查,以确保我们不会在 CSP 中提供无效的 URL,同时也确保排除了 theme-javascript 的 URL:
7 个赞