1

在接受通常非常大(几 MB)的 HTTPS 发布请求的 node.js 服务器中,我们希望能够在服务器接受整个请求之前开始处理请求。

例如,如果一个大胖体的请求到达,我们想查看它的路径并根据它决定是否终止/拒绝它,而不必等待整个请求到达(并支付接收该请求的 IO 成本)肥胖的身体)。

4

2 回答 2

1

You could try the the Connect Limit middleware:

https://github.com/senchalabs/connect/blob/master/lib/middleware/limit.js

or, implement your own solution in a similar way by checking req.headers[content-length], etc..

于 2013-03-25T13:50:44.713 回答
0

根据实验,Node.js 似乎只request在解析 HTTP 标头后触发事件。data这意味着在我们开始监听事件之前就有机会检查标题。

因此,解决方案似乎是在读取任何数据之前检查标头,并可能在此时拒绝请求。如果此时我们不拒绝,我们会在数据缓冲区到达时开始累积数据缓冲区,如果它们超过限制(因此与报告的内容长度冲突),我们还有另一个机会通过调用response.end().

于 2013-04-07T15:56:47.243 回答