在我的netty服务器应用程序中,我收到一个HttpRequest,只有当具有特定内容的cookie存在且有效(一种身份验证)时才必须处理该HttpRequest。 在我的管道中,我有以下对象:
我想要的是,如果cookie不存在或无效,则不会进一步详细说明并返回FORBIDDEN错误。
这就是我在'MyCookieHandler'中所做的:
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
...
if (!isValid(cookie)) {
ctx.writeAndFlush(
new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN))
.addListener(ChannelFutureListener.CLOSE);
return;
}
}
但是,只要调用'writeAndFlush',客户端就会收到错误'来自服务器的空回复'。
我的代码出了什么问题?
谢谢, 的Massimiliano
答案 0 :(得分:1)
我发现了什么是错误。为ChannelFuture
返回的writeAndFlush
添加未来的侦听器,我发现问题是管道中需要HttpResponseEncoder
来编码ByteBuf
的答案。< / p>
所以,为了解决这个问题,我用这种方式改变了管道:
现在可行。