如何用空白页替换 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/html
content type的网络浏览器中。
如果仅使用 application/json
从本机客户端访问 Spring REST Web 服务,则错误会自动转换为 JSON。
如果真的想为网络浏览器显示一个空白页面,可以以某种方式覆盖BasicErrorController#errorHtml()
bean 方法。
【讨论】:
最后我研究了一个不存在的问题。 如何覆盖BasicErrorController.errorHtml()
?有什么例子吗?以上是关于如何用空白页替换 Spring Boot 的“Whitelabel Error Page”?的主要内容,如果未能解决你的问题,请参考以下文章