Блокировка постов на форуме: оптимизация сообщений об ошибках 418 или 502 Bad Gateway

При отправке сообщения на форуме оно блокируется, а в всплывающем окне отображается ошибка 418 или 502 Bad Gateway. Это сообщение не совсем точно. В каком месте форума можно оптимизировать это уведомление, чтобы сделать его более подробным и понятным для пользователя?

Если пользователь откроет DevTools в браузере (правый клик > Inspect > Console), там обычно будет записано сообщение об ошибке. Также его можно найти в /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]

Discourse уже использует переведённые строки, когда сервер возвращает error_key или другую структурированную ошибку. Однако в случае «сырого» ответа 502 срабатывает описанный выше резервный вариант.

Плагин мог бы заменить сообщение перед отображением собственного диалогового окна об ошибке, но я не вижу публичного хука Plugin API для глобального изменения этого резервного сообщения. Вероятно, потребуется изменение в ядре или новый хук Plugin API, чтобы сделать эти резервные сообщения HTTP глобально настраиваемыми/переводимыми.


  1. ↩︎

  2. ↩︎

1 лайк