将标头添加到 ChannelHandlerContext (Netty) 触发的响应中

Posted

技术标签:

【中文标题】将标头添加到 ChannelHandlerContext (Netty) 触发的响应中【英文标题】:add headers to a response fired by ChannelHandlerContext (Netty) 【发布时间】:2019-05-12 07:23:17 【问题描述】:

我有一个无法编辑的 jar,它在 http 响应中添加了几个标头。然后它接受响应和ctx.writeAndFlush(resp)

有没有办法在其他地方(如中间件)捕获此响应并对其进行编辑(添加/删除标题等)?

代码使用Netty http 传输

【问题讨论】:

【参考方案1】:

如果您有权访问 ChannelHandlerContext (ctx)、ChannelPipeline,响应会通过它们传播。然后,您可以通过将ChannelOutboundHandler 添加到Pipeline 并覆盖此处理程序的writeflush 方法来访问响应。在这些方法中,您可以修改响应。

【讨论】:

【参考方案2】:

当然,您可以添加自己的ChannelOutboundHandlerAdapter 并覆盖write(...)。您可以在此处即时调整response,然后再次调用ctx.write(...) 并将其传递。

只需确保将您的处理程序放在 ChannelPipeline 中的其他处理程序之前。

【讨论】:

以上是关于将标头添加到 ChannelHandlerContext (Netty) 触发的响应中的主要内容,如果未能解决你的问题,请参考以下文章

将 UIButton 添加到 UICollectionView 标头

如何将 HTTP 标头添加到 SOAP 客户端

如何将标头添加到 PySpark DataFrame?

将标头添加到 ResponseWriter

Guzzle HTTP - 将授权标头直接添加到请求中

骆驼如何将授权标头添加到休息路线?