如何用空白页替换Springs whitelabel错误页?

时间:2018-10-31 15:03:39

标签: java spring spring-mvc spring-web

在任何例外情况下,默认情况下,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,但是它完全禁用了错误处理,因此显示了Web服务器的默认错误页面(例如,在tomcat的404 tomcat错误页面上)。

那不是我想要的。我只想显示一个空白的普通页面。可以这么说:一个空的响应主体。但是如何?

因为,对于开发和测试,whitelabel页面很好。但是在生产中,我想完全隐藏任何异常详细信息...

2 个答案:

答案 0 :(得分:2)

我认为本教程描述了前进的道路: 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);
    }

}

答案 1 :(得分:0)

我刚刚发现,这个白色标签错误页面仅显示在请求例如html内容类型的Web浏览器中。

如果仅使用application/json从本机客户端访问spring rest Web服务,则错误会自动转换为json。

如果真的想为Web浏览器显示空白页,则可以以某种方式覆盖BasicErrorController.errorHtml() bean方法。