Браузер не показывает внутреннюю ошибку сервера HTML Страница со статусом 500 - PullRequest
0 голосов
/ 08 апреля 2020

В моем приложении два компонента. Интерфейс, построенный на Angular, а бэкэнд, построенный на express Я использую фреймворк Nest. js в бэкэнде.

У меня есть файл http-exception.filter.ts, который заботится о любых исключениях. До сих пор я обрабатывал Внутреннюю ошибку сервера в приложении таким образом.

if(exception.getStatus() === 500) {
    response
        .status(500)
        .json({
            status: '500',
            code: 'INTERNAL_SERVER_ERROR',
            message: 'Internal Server Error'
        });
    }

Но теперь была разработана страница HTML, показывающая сообщение Внутренняя ошибка сервера. Все, что мне нужно сделать, чтобы отобразить эту страницу, это нажать URL /ui/internal-server-error. Итак, я попытался сделать это, используя приведенный ниже код.

response
    .status(500)
    .redirect('/ui/internal-server-error');

Страница загружается, когда происходит внутренняя ошибка сервера, но проблема в том, что я не получаю 500 статус, когда я читаю сеть логи в браузере. Вместо этого я получаю статус 304 Not modified.

Может ли кто-нибудь указать мне правильное направление? Я хочу показать страницу ошибки вместе с кодом состояния 500, и страница пользовательского интерфейса должна исходить только из внешнего интерфейса, поскольку у меня нет доступа к ней.

1 Ответ

0 голосов
/ 09 апреля 2020

Когда вызывается redirect, он устанавливает статус, поэтому заменяется 500.

С express документы (относится к Nest JS, использующему Express по умолчанию):

Redirects to the URL derived from the specified path, with specified status, a positive integer that corresponds to an HTTP status code . If not specified, status defaults to “302 “Found”.

res.redirect('/foo/bar')
res.redirect('http://example.com')
res.redirect(301, 'http://example.com')
res.redirect('../login')

Добавить желаемый статус в качестве аргумента в redirect.

...