是否可以在ConnectHandler上使用过滤器?

时间:2018-11-01 11:36:57

标签: jetty embedded-jetty

我在Jetty 9中使用了原始的jetty-proxy,当嵌入式启动代理服务器时,修改浏览器的代理端口后,所有访问都可以通过代理服务器进行,​​我在代理服务器中添加了自己的过滤器,添加方式是:

ServletHandler handler = new ServletHandler();
FilterHolder fh = handler.addFilterWithMapping((Class<? extends Filter>) TLFilter.class, "/*", EnumSet.of(DispatcherType.REQUEST));
context.addFilter(fh, "/*", EnumSet.of(DispatcherType.REQUEST));

但是我的过滤器只能过滤HTTP请求,但不能过滤HTTPS。

1 个答案:

答案 0 :(得分:0)

码头的开发维护人员得出了以下结果: 可以向Servlet服务方法传递CONNECT请求,但是这样做最终是徒劳的,因为不可能在Servlet内部处理CONNECT。您实际上没有访问原始IO流的权限,只有访问请求/响应的HTTP内容的权限。您几乎可以完成他的工作,但是效率却很高(没有异步IO等),因此最终您最终还是会退回到Jetty API。

此外,为什么不仅仅建立在Jetty已经提供的支持上呢?

http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/proxy/ConnectHandler.html http://download.eclipse.org/jetty/stable-9/xref/org/eclipse/jetty/proxy/ProxyServlet.html