簡體   English   中英

使用Seedstack和Undertow管理錯誤處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM