在论坛中帖子被拦截,弹窗显示 418 error 或者 502 Bad gateway提示优化

在论坛中帖子被拦截,弹窗显示 418 error 或者 502 Bad gateway提示,这个提示不是很准确,可以在论坛哪个位置优化这个提示,可以更详细化提示用户

如果用户打开浏览器的开发者工具(右键 > 检查 > 控制台),通常可以在那里看到错误日志。此外,在 /logs 目录中(仅管理员可见)也能看到。

有什么方法可以修改这个错误提示吗,比如这个弹窗中的提示改成网络/网关错误

这可能是一个更大的根本性问题。这类错误并不常见。

我想我找到了这条消息的来源。

当 Discourse 无法在响应中找到结构化的错误消息时,它会回退到 HTTP 状态码和 statusText

if (!parsedError) {
  if (error.status && error.status >= 400) {
    parsedError = error.status + " " + error.statusText;
  }
}

Discourse 源码:HTTP 错误回退机制。[1]

这意味着 502 Bad Gateway 并不是一个常规的站点文本(Site Text)条目。它是由 HTTP 响应状态码和状态文本生成的。

生成的消息随后会在此处传递给 Discourse 的警报对话框。[2]

当服务器返回 error_key 或其他结构化错误时,Discourse 已经使用了翻译后的字符串。然而,对于原始的 502 响应,它会触发上述的回退逻辑。

插件可以在显示其自身的错误对话框之前替换该消息,但我没有看到用于全局更改此回退机制的公开插件 API 钩子。要使这些 HTTP 回退消息可全局自定义/翻译,可能需要对核心代码进行修改或新增一个插件 API 钩子。


  1. ↩︎

  2. ↩︎

1 个赞