将标头添加到 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)、Channel
或 Pipeline
,响应会通过它们传播。然后,您可以通过将ChannelOutboundHandler
添加到Pipeline
并覆盖此处理程序的write
或flush
方法来访问响应。在这些方法中,您可以修改响应。
【讨论】:
【参考方案2】:当然,您可以添加自己的ChannelOutboundHandlerAdapter
并覆盖write(...)
。您可以在此处即时调整response
,然后再次调用ctx.write(...)
并将其传递。
只需确保将您的处理程序放在 ChannelPipeline
中的其他处理程序之前。
【讨论】:
以上是关于将标头添加到 ChannelHandlerContext (Netty) 触发的响应中的主要内容,如果未能解决你的问题,请参考以下文章