报告链接在帖子中作为带文本的链接时断开

这是一个有点奇怪的小问题,但它突显了与文本关联的帖子中的链接存在问题。

如果我:

  1. 创建一个带有变量的数据浏览器查询
  2. 并将其分配给一个组
  3. 通过组的报告选项卡访问 URL
  4. 添加变量并运行查询
  5. 复制 URL 并将其添加到帖子中的文本中

那么 URL 将会损坏/失效。

我观察到的是:

  1. 这是创建的一个示例链接(抱歉是私有的):
    https://ehealthforum.nz/g/HiNZ-staff/reports/128?params=%7B%22topic_id%22%3A%2234521%22%7D
  2. 当我将此链接添加到 some text here 时,URL 编码会出问题,我们得到这个:
    https://ehealthforum.nz/g/HiNZ-staff/reports/128?params=%257B%2522topic_id%2522%253A%252234521%2522%257D

这就会导致网站无法正常运行!

如果我只是将链接粘贴到帖子中,就不会发生这种情况——只有当我将其添加到文本中时才会发生。所以我认为当它遇到一些现有的编码时,就会出现问题。

@nathank 的报告集中在他发现 bug 时碰巧在做的具体细微的事情上。然而,这个 bug 与 Data Explorer 毫无关系。我担心报告的焦点过于狭窄,并且使用了不相关的 data-explorer 标签(正确的标签应该是 composer),这可能会导致 Discourse 团队难以理解,或者无法得到应有的关注。

在以下条件下,错误普遍发生:

  • URL 包含 百分比编码 的内容
  • 通过“插入链接”对话框将链接添加到帖子中。

在这种情况下,URL 总是会被损坏。

可复现的步骤:

  1. 在您的网络浏览器中打开以下 URL:
    https://en.wikipedia.org/wiki/Horncastle_boar%27s_head
    (请注意,URL 包含 ' 字符的百分比编码 %27
    :slightly_smiling_face: 预期的页面已打开。
  2. 点击帖子撰写器上的“链接”图标。
    将打开“插入链接”对话框。
  3. 在对话框的“链接或主题”字段中输入上述 URL。
  4. 点击“插入”按钮。

:bug: 通过上述过程添加的链接目标不正确:
https://en.wikipedia.org/wiki/Horncastle_boar%2527s_head

而不是正确的 URL:
https://en.wikipedia.org/wiki/Horncastle_boar%27s_head

链接将无法导向预期的页面。

这是因为百分比编码 %27% 字符被多余地编码了,导致 % 被其自身的百分比编码 %25 替换,从而将正确的 URL 内容 %27 损坏为 %2527

平台:

操作系统

  • Windows 11

浏览器

  • Google Chrome 139.0.7258.128

Discourse

12c80d43adeb87cc18604ace0430a75d277d7662

其他上下文:

我可以在 try.discourse.org 的“安全模式”下复现此错误。


在任一撰写器模式下都会发生此错误。

2 个赞

好的,我可以复现这个问题,但仅限于使用链接模态框时,对吗?(只是为了确认问题的范围)

如果我直接粘贴:https://en.wikipedia.org/wiki/Horncastle_boar’s_head;或者在[选中的文本](https://en.wikipedia.org/wiki/Horncastle_boar's_head)上粘贴URL,它会按预期工作。

编辑:或者……几乎可以。直接URL会被解码:https://en.wikipedia.org/wiki/Horncastle_boar’s_head,这也出乎意料,并且避免了内联一键打包。

感谢您的报告!

3 个赞

是的,这是正确的。

1 个赞

是的,确实如此——我没有意识到这是作曲家链接模态的更广泛的链接编码问题。

我已经编辑了标题和标签,以反映你的好观点和挖掘!

2 个赞

我认为这已在

中修复


结果是
[Horncastle boar's head](https://en.wikipedia.org/wiki/Horncastle_boar's_head)
:white_check_mark:

3 个赞

是的,我记得我曾处理过这个问题,我认为可以关闭了!

3 个赞

此主题已在 4 天后自动关闭。不再允许回复。