如何用空白页替换 Spring Boot 的“Whitelabel Error Page”?

Posted

技术标签:

【中文标题】如何用空白页替换 Spring Boot 的“Whitelabel Error Page”?【英文标题】:How to replace Spring Boot's "Whitelabel Error Page" with a blank page? 【发布时间】:2019-04-04 19:14:32 【问题描述】:

在任何异常情况下,默认情况下 Spring Boot 路由到 /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 错误页面)。

这不是我想要的。我只想显示一个空白的普通页面。或者可以这么说:一个空的响应体。但是怎么做呢?

因为,对于开发和测试,“Whitelabel 错误页面”很好。但在生产中,我想完全隐藏任何异常细节。

【问题讨论】:

您是在问,您想重定向到您的页面吗?你看过这个***.com/questions/25356781/… 不,我只想显示一个空白页面(它是一个 REST api)。 如何使用@ControllerAdvice,如果有异常返回空响应。 那我宁愿使用重定向到一个空白的html页面... 完全满足您的要求。但如果它是休息控制器,我宁愿返回带有异常消息的响应,而不是空页面。 【参考方案1】:

我认为本教程描述了要走的路: 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);
    


【讨论】:

【参考方案2】:

我刚刚发现这个“Whitelabel Error Page”只显示在请求text/htmlcontent type的网络浏览器中。

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

如果真的想为网络浏览器显示一个空白页面,可以以某种方式覆盖BasicErrorController#errorHtml() bean 方法。

【讨论】:

最后我研究了一个不存在的问题。 如何覆盖BasicErrorController.errorHtml()?有什么例子吗?

以上是关于如何用空白页替换 Spring Boot 的“Whitelabel Error Page”?的主要内容,如果未能解决你的问题,请参考以下文章

如何用空白替换文本中提取的 HTML 标签?

Excel如何用文本填充所有选定的空白单元格

如何用另一个文件中的组(已知正则表达式)替换一个文件中的空白空间?

如何用VBA实现WORD批量替换?

如何用Docker部署Spring Boot项目

Spring - Oauth:如何用 JSON-Response 替换 HTML 身份验证失败页面