在任何例外情况下,默认情况下,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页面很好。但是在生产中,我想完全隐藏任何异常详细信息...
答案 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方法。