如何在Jetty的透明代理Servlet中处理分块响应

时间:2019-08-14 06:54:10

标签: jetty reverse-proxy chunked-encoding

我正在使用Jetty 9.4.9.v20180320。我已经通过扩展Reverse Proxy servlet实现了Transparent。我已经覆盖了rewriteTargetfilterServerResponseHeader方法

  public class ServicesProxyServlet extends Transparent {
private static final long   serialVersionUID    = 1L;

@Override
protected String rewriteTarget(HttpServletRequest request) {
        ...
    return rewrittenURI;
}

@Override
protected String filterServerResponseHeader(HttpServletRequest clientRequest, Response serverResponse, String headerName, String headerValue) {
        ...
    return super.filterServerResponseHeader(clientRequest, serverResponse, headerName, headerValue);
}
}

目标服务器在给定的时间间隔内发送chunked响应。

现在,看来Transparent proxy在将其发送给客户端之前已收到整个响应,这导致客户端使用504 Gateway Timeout超时。如果我删除了filterServerResponseHeader,该错误仍然会发生。

我希望将分块的响应发送到客户端,而不在Transparent proxy中进行缓冲。这样可以避免客户端超时。如何立即在Transparent proxy中刷新接收到的数据?该如何处理?

0 个答案:

没有答案