我有一个使用 Vert.x Web 代理的反向代理服务器,用非常标准的代码实现:
...
HttpClient client = theVertx.createHttpClient();
HttpProxy proxy = HttpProxy.reverseProxy(client);
Route anyroute = theRouter.route("/*");
anyroute.handler(ProxyHandler.create(proxy));
anyroute.failureHandler(hnd->{
System.out.println("Failure. Return code: "+hnd.response().getStatusCode());
});
...
此代码运行良好,但我希望能够捕获返回代码以执行一些自定义操作(例如在发生 400 次失败时显示自定义网页)。我看到当我导致发生 404 错误时,没有调用 failureHandler() 方法中的代码。显然,如果我请求目标服务器上不存在的资源,代理实际上会将目标服务器发送的 404 错误返回给浏览器!
我想在代理接收到 404 错误并对其进行处理时捕获它。不幸的是,从 Web 代理文档(或我在 Web 上看到的少数代码示例中的任何一个)都不清楚 Web 代理甚至能够做到这一点。
是否可以编写一个可以捕获来自 HttpProxy 的响应的处理程序?如果是,我会怎么做?