[英]Manage error handling with seedstack and undertow
我需要通過設置通用錯誤消息來管理HTTP錯誤,以便在HTTP響應中隱藏服務器端錯誤。
我正在使用Seedstack和嵌入式服務器undertow。 我發現了如何使用HttpHandler管理錯誤,但我還沒有發現如何將此錯誤處理程序集成到SeedStack中。
我的SimpleErrorPageHandler
public class SimpleErrorPageHandler implements HttpHandler {
private final HttpHandler next;
public SimpleErrorPageHandler(final HttpHandler next) {
this.next = next;
}
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
exchange.addDefaultResponseListener(exchange1 -> {
if (!exchange1.isResponseChannelAvailable()) {
return false;
}
if (exchange1.getStatusCode() == 500) {
final String errorPage = "<html><head><title>Error</title></head><body>Internal Error</body></html>";
exchange1.getResponseHeaders().put(Headers.CONTENT_LENGTH, "" + errorPage.length());
exchange1.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/html");
Sender sender = exchange1.getResponseSender();
sender.send(errorPage);
return true;
}
return false;
});
next.handleRequest(exchange);
}
}
當前版本的SeedStack不允許定義自定義的Undertow HTTP處理程序。 只有用於servlet支持的HTTP處理程序是硬編碼的。 我們計划在將來引入該功能 。
但是,關於您的問題,我們只是合並了為特定的HTTP狀態代碼或異常指定錯誤頁面的功能,以及默認錯誤頁面的功能。 這樣可以完成:
web:
server:
errorPages:
- location: /errors/404.html
errorCode: 404
- location: /errors/415.html
errorCode: 415
- location: /errors/default.html
該功能將在7月底發布的SeedStack 19.7中發布。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.