自定义头部链接拒绝Matrix URL

更新到 3.4 版本时,自定义标题链接主题组件因类似 https://matrix.to/#/#matrix-meta-chat:fedoraproject.org 的 Matrix 链接而无法更新。错误信息为:“JSON 指针 /3/url 处的属性必须是有效的 URL。”

移除此链接后,更新顺利进行,但无法重新添加该链接。

(解决方法:创建一个重定向到 https://matrix.to/#/#matrix-meta-chat:fedoraproject.org 的永久链接 /matrix,然后将 /matrix 添加为自定义标题链接)

不过,也许可以使其更灵活一些。显然,该链接格式对于永久链接来说是没问题的。

3 个赞

双重 # 会导致核心中的对象设置验证失败(并非此 TC 本身)。

无效的 URI(不是 URI 吗?):“https://matrix.to/#/#matrix-meta-chat:fedoraproject.org”(URI::InvalidURIError)

它不是一个严格有效的 URI,所以你需要对片段进行编码。
这里,使用 https://matrix.to/#/%23matrix-meta-chat:fedoraproject.org 将会起作用。

查看代码:
https://github.com/discourse/discourse/blob/main/lib/theme_settings_object_validator.rb#L191-L193
is_valid_url 定义在这里:

你可以看到他们已经有了另一个函数来处理这种情况,并且在其他地方也被使用了:

我认为对于主题对象 URL 验证使用 relaxed_parse 是合理的。
例如:if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)

6 个赞