强制 Discourse 不访问链接

你好,

我正在使用 API 创建私信(PM)。内容可以包含 HTML 以及链接。在这些链接中,有些是一键操作链接。基本链接示例:<a href="https://" target="_blank">..</a>

问题是 Discourse 会访问任何链接并触发这些一键操作。

如何阻止这种情况?我不确定是哪个功能导致了这个问题。
我们是否可以在 HTML 中添加某种提示,让 Discourse 忽略某个链接?
或者是否有我遗漏的选项?

注意:目前我在后端添加了一个检查来忽略 Discourse 的访问,但如果可能,我希望避免依赖这种方式。

谢谢!

你不应该编写一个仅在访问链接时即执行操作的链接。这在各种情况下都被视为存在可利用的安全漏洞。用户必须明确确认该操作。

背景是用户订阅了通知,出于法律原因,你必须附加链接,允许他们取消订阅当前通知或所有通知。这些特定链接必须是单步操作,无需额外步骤(如登录、确认等)。这些链接使用生成的令牌,无法被利用。用户将在其私人收件箱(Discourse 或其他如 Gmail)中看到包含这些链接的消息,因此不需要确认,确认也无济于事。

我的问题依然成立:是否有办法让 Discourse 不访问某个链接?无论是通过 HTML 还是选项?

无论背景如何,这实际上都很有趣。如果目前不存在该功能,那么提供一个选项来屏蔽特定域名或 URL 以避免不必要的请求,将会非常受欢迎。

再次强调:你不能那样做。此外,浏览器(扩展)和病毒扫描器会预访问/预加载页面上遇到的链接。

根据 HTTP 规范,任何会导致服务器实际变更的请求必须是 POST 请求。因此,如果你有一个链接,必须将其指向一个包含执行 POST 请求按钮的网页。其他方式会导致难以排查的问题。

谁说它们必须是这样的?退订链接指向一个确认网页是非常正常的做法——原因正是我上面提到的。

这确实是一个非常合理的理由。我之前没想到这一点。:thinking:

首先是我的客户。:smile:
实际上我最初设计的是一个表单,但他想要一个一键操作的链接。

但你提出了一个非常有力的观点,感谢你的指点!