2014-10-08 154 views
2

我目前正在构建一个接收客户端上传(可能是大文件)的node.js express Web服务。我有一个端点(我们称之为FOO),它为每个请求返回一个重定向,告诉客户端上传数据的位置(我们称之为URL DEST)。我担心客户端会将请求正文中的数据发送到FOO,即使FOO保证重定向。我意识到端点FOO可以忽略请求体中的数据,但是我担心客户端会上传两次数据。一次到FOO,一次到DEST。即使服务器返回重定向(3XX),HTTP客户端是否会向服务器发送请求主体?

有谁知道这是否符合HTTP客户端的行为?

如果是这样,有没有办法阻止HTTP客户端上传两次?

回答

0

默认情况下,在节点v0.10.x或更高版本中,流开始暂停,因此没有数据流动。因此,您可以立即发送重定向,并且很少将任何正文数据传输到服务器。

+0

感谢您的回答!我不完全确定这是完全回答我的问题(也许我应该更明确?)。一些澄清,我想知道是否有可能发信号给客户端不发送任何数据到服务器。这样的事情是可能的,还是仅仅是HTTP上传身体的本​​质? – ravenac95 2014-10-08 14:41:19

+0

HTTP分层在TCP之上。因此,除非您从节点中的HTTP请求流开始读取,否则TCP堆栈将适当地应用反压,告诉客户端停止发送数据(使用TCP NAK消息)。试试我的建议,它应该适合你。 – mscdex 2014-10-08 15:44:02