jetty - 是否可以在 ConnectHandler 上使用过滤器?
问题描述
我在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 。
解决方案
jetty 的开发维护人员给出了结果:可以将 CONNECT 请求传递给 Servlet 服务方法,但这样做最终是徒劳的,因为不可能在 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
推荐阅读
- c++ - push_back 使用原始指针与使用智能指针
- python - 我的带有聊天过滤器事件的 discord.py 机器人发送 2 条或更多消息而不是 1 条
- python - 图片无法在移动设备上加载
- php - Laravel 6.0 Eloquent - 按日期和状态排序
- java - 如何用另一种类型的二维数组的维度初始化一种类型的二维数组
- database - 了解 DISTINCT vs DISTINCT ON vs Group by
- mysql - 日期格式不正确
- node.js - 将变量作为值传递时,Model.findOne() 函数不起作用
- git - 哪些信息存储为每个 git commit 的树对象内容
- selenium-webdriver - 在 POM 中使用 sendkey 传递值时获取 NullPointerException