Как заменить страницу ошибок Springs whitelabel пустой страницей? - PullRequest
0 голосов
/ 31 октября 2018

При любых исключениях по умолчанию Spring перенаправляет на /error, что приводит к ошибке html-страницы:

Whitelabel Error Page

This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Oct 31 16:01:01 CET 2018
There was an unexpected error (type=Not Found, status=404)

Вопрос: как вместо этого показать по умолчанию пустую страницу только для определенной конечной точки?

Существует свойство server.error.whitelabel.enabled=false, но оно полностью отключает обработку ошибок, поэтому отображается страница ошибок по умолчанию для веб-серверов (например, на tomcat странице ошибок 404 tomcat).

Это не то, что я хочу. Я просто хотел бы показать пустую простую страницу. Или так сказать: пустое тело ответа. Но как?

Потому что для разработки и тестирования страница с белой меткой - это хорошо. Но в производстве я бы хотел полностью скрыть все детали исключений ...

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Я только что обнаружил, что эта страница с ошибкой белой метки отображается только внутри веб-браузера, запрашивающего, например, тип контента html.

Если доступ к веб-сервису пружинного упора осуществляется из собственного клиента с использованием только application/json, ошибка автоматически преобразуется в json.

В случае, если кто-то действительно захочет показать пустую страницу для веб-браузеров, можно просто как-то переопределить метод бина BasicErrorController.errorHtml().

0 голосов
/ 31 октября 2018

Я думаю, что этот урок описывает путь: https://www.baeldung.com/spring-boot-custom-error-page

По сути, вы бы сделали что-то вроде этого:

@Controller
public class MyErrorController implements org.springframework.boot.web.servlet.error.ErrorController {

    @RequestMapping("/error")
    public String handleError() {
        //do something like logging
        return "error";
    }

    @Override
    public String getErrorPath() {
        return "/error";
    }
}

И тогда вы убедитесь, что поведение по умолчанию отключено.

@EnableAutoConfiguration(exclude = {ErrorMvcAutoConfiguration.class})
@SpringBootApplication
public class Application {

    public static void main(String... args) {
        SpringApplication.run(Application.class, args);
    }

}
...