帖子中的脚本?

您好,

有什么方法可以使脚本仅在帖子中由管理员运行吗?

我以前尝试过设置,但我的网站在 PuTTY 中崩溃了。

祝您周三愉快
Olle

几年前曾有一篇关于此事的帖子,但我希望有办法做到这一点。

https://meta.discourse.org/t/adding-a-javascript-in-a-post/130019/3

Olle

@Olle11 如果您能更详细地说明您想实现的目标,可能会有帮助。

无法通过 Composer 临时允许这种情况,但根据您的具体用例,可能存在变通方法。

例如,“投票”插件基本上会在帖子中运行 JavaScript(除其他功能外)。

2 个赞

我希望通过 HTML 或 React 运行一个脚本,以便在热门帖子中实时显示小部件。

例如,通过 HTML 小部件脚本显示城市实时天气的窗口小部件。

投票插件在这种情况下是否可用?

此致
Olle

1 个赞

不,我只是用那个作为示例。看看它的源代码。

如果你能在其他地方托管JavaScript,可以尝试使用iFrame。

如果你想要紧密集成,你需要考虑使用EmberJS。

3 个赞

如果您想在帖子中显示内容,而不是在顶部显示横幅,这可能是最易于访问的答案。

例如,我从 CodePen 中选择了一个首页项目(因为它在我们 allowed_iframes 中),并将其嵌入在下方:

source

6 个赞

我需要的脚本似乎不允许 iframe,因为它有 X-FRAME-Options: DENY。

1 个赞

也许可以这样做,以允许在 Discourse 中运行脚本 @merefield @supermathie

App.yml:
DISCOURSE_ALLOW_UNSAFE_HTML: true

  • volume:
    host: /var/discourse/shared/standalone/nginx_custom.conf
    guest: /etc/nginx/conf.d/custom.conf

CSP 的 Nginx 配置:
add_header Content-Security-Policy “script-src ‘self’ ‘https://webadress.com’ ‘unsafe-inline’ ‘unsafe-eval’;”

我正在尝试添加 Nginx 配置,但在使用 curl 检查 CSP 时,‘unsafe-inline’ 和 https 都不会显示出来。‘unsafe-eval’ 是通过管理员添加的。

编辑:不安全

移除Discourse为了防止这种情况所采取的保护措施是一个非常糟糕的想法。

这就是为什么每个人都试图引导你使用建议的方式来实现这一点。

你应该使用主题或主题组件在页面中添加脚本。

7 个赞

我可以使用主题或主题组件向帖子添加脚本吗?

我该如何在 CSP 中包含“unsafe-inline”以使脚本正常工作?

可以。脚本本身需要放在帖子外面,或者你可以让它装饰帖子的特定方面。

如果不具体说明,很难确切知道你想要什么。

这是一个坏主意,你不应该这样做。

5 个赞

关于CSP以及我添加到app.yml的内容,我将删除unsafe_html: true、nginx卷和用于CSP的nginx配置,因为它不安全。

也许一个主题组件可以起作用,嗯。

您想运行哪个脚本?

您想在哪里运行它?

是针对特定帖子运行?还是在页面中的其他位置运行?需要传递哪些参数?每个帖子都不同吗?类别?

2 个赞

iframe 可能会起作用。我确实需要更新 CSP 和 unsafe_html,以确保网站的安全,因为我尝试的 CSP 和其他解决方案都不安全

感谢您的输入。Iframe 至少目前可能有效,直到我找到更好的解决方案。

查看脚本,您无法全局运行它。它需要加载到带有选项的页面中。

我做了一个简单的 TC:GitHub - Arkshine/discourse-tradingview-chart

为了方便更改选项,您可以直接从网站上将它们复制并粘贴到 [wrap]..[/wrap] 中。

默认情况下,它强制纵横比为 16/9,它将占据所有宽度空间,高度是自动的。脚本允许指定宽度/高度,它同样有效。

我建议使用 show_popup_button: true 选项。它将为您提供一种在新窗口中以全屏模式查看图表的方法。

image

我添加了两个选项:

8 个赞

抱歉,但仅仅一个 :heart: 不足以表达 . . .
哥们儿。太棒了。

3 个赞