# 全局通知中不允许使用 HTML

**URL:** https://meta.discourse.org/t/no-html-in-global-notice/205220
**Category:** Support
**Created:** [2021年十月5日 02:59 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220 "2021-10-05T02:59:08Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Simsnet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simsnet/32/72855_2.png) [@Simsnet](https://meta.discourse.org/u/Simsnet)
#### Post date: [2021年十月5日 02:59 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/1 "2021-10-05T02:59:08Z")

</div>

本主题已由 Discourse 团队解决。为存档目的，我将保留原始主题，但此问题已由 @Roman 和团队解决。

* * *

> 我最近重建了 Discourse 以更新我的 SMTP 设置，现在我的全局通知中的 HTML 标签被直接渲染出来了。
> 
> 带有标签时的效果如下：
> 
> > ## 欢迎来到新的 Real Racin' USA 赛车运动论坛！
> > 
> > * * *
> > 
> > 您的祈祷和愿望已得到回应。
> > 
> > 我们为您准备了一个更快、更新、更易用的论坛体验，并将旧论坛的所有内容迁移到了这里。您的所有主题、帖子和用户资料都完好无损，与您离开时一模一样！
> > 
> > **_请阅读我们的 [“我想找回我的账号！”](https://forum.realracinusa.com/t/topic/44212) 帖子，以获取如何重新登录账号的说明。_**
> > 
> > 如今尘埃基本落定，我们仍在检查该论坛，以确保其能正常为所有人服务。
> > 
> > 如需获取论坛的所有更新及帮助，请访问 [Sunshine State Racing 的 Facebook 页面](https://www.facebook.com/SunshineStateRacing)。
> 
> 但重建后，我得到了以下内容：
> 
> ![image](https://global.discourse-cdn.com/meta/original/3X/b/0/b068f78aae9d066d6eaa8c7faf5e7a52784e6fe0.png)

---

<div class="post-metadata">

### Author: ![Simsnet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simsnet/32/72855_2.png) [@Simsnet](https://meta.discourse.org/u/Simsnet)
#### Post date: [2021年十月5日 03:04 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/3 "2021-10-05T03:04:17Z")

</div>

在最近的一次提交中，发现对全局公告进行了更改，导致此功能被禁用。

> <https://github.com/discourse/discourse/commit/90a3fbc07b79ea019de8cb93126db4e26eda6fde>
>
> \* DEV: Remove HTML setting type and sanitization logic.
> 
> We concluded that we …don't want settings to contain HTML, so I'm removing the setting type and sanitization logic. Additionally, we no longer allow the global-notice text to contain HTML.
> 
> I searched for usages of this setting type in the \`all-the-plugins\` repo and found none, so I haven't added a migration for existing settings.
> 
> \* Mark Global notices containing links as HTML Safe.

---

<div class="post-metadata">

### Author: ![Grayden\_Shand](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/grayden_shand/32/166586_2.png) [@Grayden\_Shand](https://meta.discourse.org/u/Grayden_Shand)
#### Post date: [2021年十月5日 12:09 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/4 "2021-10-05T12:09:32Z")

</div>

那么，现在有什么方法可以在全局通知中包含链接吗？

---

<div class="post-metadata">

### Author: ![Simsnet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simsnet/32/72855_2.png) [@Simsnet](https://meta.discourse.org/u/Simsnet)
#### Post date: [2021年十月5日 12:33 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/5 "2021-10-05T12:33:01Z")

</div>

我的替代方案是发布帖子并将其置顶为横幅主题。

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2021年十月5日 13:25 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/6 "2021-10-05T13:25:22Z")

</div>

是的，我们不再允许全局公告站点设置包含 HTML，仅支持纯文本。我们选择将其视为其他用户输入并进行清理。

如上所述，变通方法是使用横幅主题。

---

<div class="post-metadata">

### Author: ![Grayden\_Shand](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/grayden_shand/32/166586_2.png) [@Grayden\_Shand](https://meta.discourse.org/u/Grayden_Shand)
#### Post date: [2021年十月5日 13:28 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/7 "2021-10-05T13:28:44Z")

</div>

太遗憾了，那确实很有用。

谢谢您的澄清。

---

<div class="post-metadata">

### Author: ![Nemanja\_Memarovic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nemanja_memarovic/32/235862_2.png) [@Nemanja\_Memarovic](https://meta.discourse.org/u/Nemanja_Memarovic)
#### Post date: [2021年十月5日 13:29 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/8 "2021-10-05T13:29:58Z")

</div>

嗯，这只是我的一点个人看法，但这两者的目的非常不同。

全局横幅的存在是有其用意的，例如当我希望就某个重要主题通知论坛时。如果用户关闭了该横幅，此设置会被保留，他们将无法看到本可通过全局通知可见的更新。

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2021年十月5日 13:51 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/9 "2021-10-05T13:51:52Z")

</div>

是的，我们决定保留该设置，因为我们知道在紧急情况下，一个不可关闭的横幅非常有用，但允许未经过滤的 HTML 可能存在潜在危险。

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [2021年十月5日 13:58 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/10 "2021-10-05T13:58:59Z")

</div>

如果某人拥有设置全局通知的权限，那么他们也被允许创建主题组件吗？因此，这里不存在额外的攻击向量？

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2021年十月5日 14:44 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/11 "2021-10-05T14:44:21Z")

</div>

需要明确的是，我们不认为这是一个安全问题，因为只有管理员才能更新此设置。这是持续努力的一部分，旨在禁止在站点设置中使用 HTML，并采用其他专为支持此目的而设计的工具。

---

<div class="post-metadata">

### Author: ![jericson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jericson/32/116215_2.png) [@jericson](https://meta.discourse.org/u/jericson)
#### Post date: [2021年十月5日 17:06 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/12 "2021-10-05T17:06:45Z")

</div>

让我阐述一下允许使用 HTML 的理由。我正在为一个即将启动投资者论坛的客户工作。（巧合的是，封闭测试已于昨天开始。）他们的法律团队坚持要求添加免责声明。该声明必须：

- 在论坛的每个页面上显著显示。
- 不可被用户关闭。

换句话说，这是一个全局通知。\[1\]

作为一个例子（并非我正在工作的网站，但属于同一领域），请查看 [Freetrade](https://community.freetrade.io/) 上的免责声明。需要注意的是，法律团队 **并不关心** 通知中是否包含 HTML。他们只希望看到它存在，并且用户无法声称自己没看到它。

不幸的是，由于这是一大段文本，该通知看起来有点碍眼。幸运的是，法律团队同意使用较小的字体，并提供一个指向完整免责声明的链接。团队上周提交给法律的文案中包含了一个指向免责声明的链接。但这周我们发现，全局通知中不再允许使用 HTML。这真是“有趣”。

与此同时，如果我们将其用于预期目的（“紧急、不可关闭的全局横幅通知，面向所有访问者”），那么 **提供一个链接到状态页面或其他了解更多信息的地方** 难道不是很有用吗？

> [@Roman](#):
>
> 我们选择将其视为任何其他用户输入并进行清理。

但这真的不是“任何其他用户输入”，对吧？这是一个只有少数人才能更改的网站设置。从网站所有者的角度来看，这不是用户输入，而是提供给用户的界面的一部分。\[2\]

> [@Roman](#):
>
> 明确一下，我们不认为这是一个安全问题，因为只有管理员可以更新此设置。这是持续禁止在网站设置中使用 HTML 并使用其他支持此功能的工具的努力的一部分。

是否有解释其理由的地方？如果你们正在开发另一个支持允许链接的不可关闭全局横幅的工具，\[3\] 了解其何时准备就绪将会很有帮助。如果可以的话，我更倾向于避免不得不进行自定义设置。

如果我表现得有点脾气暴躁，我表示歉意。我们不知道会有这个变更，这让我们陷入了尴尬的境地。社区原定于下周向更广泛的受众开放，而这个变更却给计划带来了阻碍。

* * *

* * *

1. 我可以看到有人主张这是对该功能的误用。但如果我们要自己构建这个功能，它的运作方式将 **完全** 像全局通知一样。🤷‍♂️ 

2. 我理解从 Discourse 的角度来看，管理员也是用户。但在本例中，这种思维方式感觉不太对劲。 

3. 当然还有样式设计，但那是次要的。

---

<div class="post-metadata">

### Author: ![Simsnet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simsnet/32/72855_2.png) [@Simsnet](https://meta.discourse.org/u/Simsnet)
#### Post date: [2021年十月5日 17:58 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/13 "2021-10-05T17:58:03Z")

</div>

我最初提出这一建议是为了进一步保护数据库条目，主要是因为我在一个旧论坛上遇到过编码问题。

该论坛上的表情符号被转换为 `&#` 格式，当被引用时，在转换过程中会导致“utf-8 中的无效字节序列”错误，并且论坛将表情符号显示为 � 符号。

我认为在未来的更新中，HTML 标签也可能出现类似情况，从而导致数据库问题，并使所有社区无法运行。

更熟悉代码的人或许可以确认，由于每个修复在推送到主分支供下载/更新之前都要经过多次检查，这种情况很可能不会发生。Discourse 团队致力于将系统打造为面向所有希望在线建立社区的用户的一键式、自包含且无问题的解决方案，他们在这一方面做得非常出色！

尽管如此，我的简单修复目前足以应对，直到有新的解决方案发布。此外，由于可以关闭横幅主题，屏幕上的杂乱内容也减少了，这也是一件好事。

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2021年十月5日 18:17 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/14 "2021-10-05T18:17:43Z")

</div>

> [@jericson](#):
>
> 是否有说明其理由的地方？如果你们正在开发另一个工具来支持带有链接且不可关闭的全局横幅[^3]，请告知预计何时可用。如果可以的话，我希望能避免设置自定义方案。
> 
> 如果我显得有点暴躁，请见谅。我们并不知道会有这一变更，这让我们陷入了尴尬的境地。社区原定于下周向更广泛的受众开放，而这一变更打乱了计划。

对由此带来的不便深表歉意。若要创建不可关闭的横幅，请参考以下主题组件：

> [@Versatile Banner](https://meta.discourse.org/t/versatile-banner/109133):
>
> discourse2Summary Versatile Banner adds a customizable banner to your site.eyeglassesPreview [Preview on Discourse Theme Creator](https://discourse.theme-creator.io/theme/Discourse/versatile-banner)hammer_and_wrenchRepository Link [https://github.com/discourse/discourse-versatile-banner](https://github.com/discourse/discourse-versatile-banner)open_bookNew to Discourse Themes? [Beginner’s guide to using Discourse Themes](https://meta.discourse.org/t/beginners-guide-to-using-discourse-themes/91966) Install this theme component Features This theme component is an evolution of previous banner efforts. The goal is to provide more ease and flexibility through the use…

它比全局公告更强大且更具可定制性。

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2021年十月5日 20:00 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/15 "2021-10-05T20:00:00Z")

</div>

我们已在全局公告设置中重新启用 HTML 支持。我们希望找到一种更好的方法来确保平稳过渡。

> <https://github.com/discourse/discourse/pull/14521>
>
> We still want to drop support for HTML, but we'll temporarily reenable and figu…re out a transition plan.

---

<div class="post-metadata">

### Author: ![Simsnet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simsnet/32/72855_2.png) [@Simsnet](https://meta.discourse.org/u/Simsnet)
#### Post date: [2021年十月5日 21:34 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/16 "2021-10-05T21:34:33Z")

</div>

在全球公告字段下方的描述中，您可以填写：

“HTML 支持将在未来的版本中移除”

另外，当该功能被禁用时，描述仍然显示“允许 HTML"。

---

<div class="post-metadata">

### Author: ![Nemanja\_Memarovic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nemanja_memarovic/32/235862_2.png) [@Nemanja\_Memarovic](https://meta.discourse.org/u/Nemanja_Memarovic)
#### Post date: [2021年十月7日 06:58 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/17 "2021-10-07T06:58:15Z")

</div>

@Roman\_Rizzi 带有全局公告的版本何时发布？

---

<div class="post-metadata">

### Author: ![Roman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/roman/32/157504_2.png) [@Roman](https://meta.discourse.org/u/Roman)
#### Post date: [2021年十月7日 18:19 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/18 "2021-10-07T18:19:07Z")

</div>

我们对此进行了讨论，并决定保留全局通知设置的 HTML 支持，因此它不会很快被移除。

---

<div class="post-metadata">

### Author: ![Nemanja\_Memarovic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nemanja_memarovic/32/235862_2.png) [@Nemanja\_Memarovic](https://meta.discourse.org/u/Nemanja_Memarovic)
#### Post date: [2021年十月7日 20:12 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/19 "2021-10-07T20:12:16Z")

</div>

那我漏掉了什么？为什么它在我们的论坛（[https://discuss.daml.com](https://discuss.daml.com)）上无法运行？

---

<div class="post-metadata">

### Author: ![Simsnet](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simsnet/32/72855_2.png) [@Simsnet](https://meta.discourse.org/u/Simsnet)
#### Post date: [2021年十月7日 20:14 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/20 "2021-10-07T20:14:57Z")

</div>

升级您的 Discourse。它已于几天前重新启用，请执行升级操作，问题应会解决。

---

<div class="post-metadata">

### Author: ![Nemanja\_Memarovic](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nemanja_memarovic/32/235862_2.png) [@Nemanja\_Memarovic](https://meta.discourse.org/u/Nemanja_Memarovic)
#### Post date: [2021年十月7日 20:19 UTC](https://meta.discourse.org/t/no-html-in-global-notice/205220/21 "2021-10-07T20:19:35Z")

</div>

谢谢您的超快回复！刚刚升级，但仍然无法工作（HTML 正在显示）。

[下一頁](https://meta.discourse.org/t/no-html-in-global-notice/205220.md?page=2)
