java - Java Vert.x 反向代理自动 Netty 解码
问题描述
我有一个反向代理的小型 Vert.x 实现,它在功能上运行良好。
下游请求使用 tryUseCompression(true) (gziped) 完成,我们的服务器可以相应地响应。
为了避免额外的解压缩/压缩,我们希望当我们收到请求压缩的请求时,并且下游以相同的压缩回答(例如全部在 gzip 中),那么 HTTP 代理不应该尝试解压缩下游结果,而是返回为是对上游响应。
就我可以遵循 Vertx 代码而言,Netty 总是被调用来解码它收到的消息,我们只得到结果
请参阅 Http1xClientHandler::handleMessage:
HttpObject obj = (HttpObject) msg;
DecoderResult result = obj.decoderResult();
也可以在 HttpChannelConnector::applyHttp1xConnectionOtions 找到
if (client.getOptions().isTryUseCompression()) {
pipeline.addLast("inflater", new HttpContentDecompressor(true));
}
是否可以告诉 Vertx / Netty 不要解压缩单个调用的结果?
谢谢您的帮助
解决方案
不,这是不可能的。您最好的选择是在代码中处理压缩/解压缩。
推荐阅读
- android - 如何每 5 秒刷新一次 Android WebView 活动?
- javascript - 使用 onchange 函数获取复选框值
- c - Fopen 无法从命令行读取
- python - 如何在相似列值上比较两个不同的数据框并将值放入其他数据框
- awk - 复制行 2 次并从行到列转置
- c - printf 在调用通过引用传递变量的函数时发出警告
- vuejs2 - `apollo-link-state` 和 `vuex`,当我使用 `vue-apollo` 时,我应该使用哪一个来进行状态管理?
- c# - 防止对php登录系统的恶意攻击
- spring-mvc - 如何从 jsp 的下拉菜单中获取多个选定的值并在控制器方法中使用它
- c# - 将字节数组转换为一定长度的数组段