如何在不是最后一块时写响应

时间:2014-11-19 14:12:45

标签: netty

我正在运行netty http upload示例,并且还需要在上传文件之前进行身份验证;我知道要上传大文件,我们使用多部分模式上传,服务器端将多次读取POST请求。

所以我的想法是在请求体中将令牌设置为第一个参数,并且在读取块时我可以首先验证令牌,如果不匹配则取消整个请求并将一些状态码返回给客户端。

重点是我如何取消请求并正确发送状态代码,我曾尝试过如下,但是当频道关闭时,客户端没有完成发送请求,并且会抛出"连接重置& #34;例外:

ChannelFuture future = channel.writeAndFlush(response);
future.addListener(ChannelFutureListener.CLOSE);

如何在手动阅读chunked post msg时将响应发送回客户端。 在我的情况下,当块不是最后一个块时发送响应和关闭通道,客户端无法获得任何响应。

1 个答案:

答案 0 :(得分:1)

我认为你做的方式是正确的,但请注意,根据收到完整请求之前在回答中找到的以下项目是可能的,但大多数浏览器都不支持:

Is it acceptable for a server to send a HTTP response before the entire request has been received?

如果客户端是您自己的,那么在连接重置之前,是否有任何日志显示消息正在返回?您是否有能力在第一条消息之前,在任何块之前从服务器发送答案(因此仅基于标题)(可能有帮助)?