Web服务是否可以停止文件上载并返回早期响应?

时间:2016-05-16 10:58:50

标签: http

如果Web服务只需要文件的第一部分(例如,生成PDF文件第一页的缩略图),则服务是否有可能在获得所有信息后发送终止请求的响应它需要,所以客户端不会上传文件的其余部分吗?

1 个答案:

答案 0 :(得分:1)

有点野蛮,是的。通过断开连接。来自RFC 7230, section 6.3.1

  

可以随时关闭连接,无论是否有意。

但是,没有真正的方法让客户知道它不会重试请求。这一切都归结为请求方法是否是幂等的。来自同一部分:

  

当入站连接过早关闭时,如果所有这些请求都idempotent methods,则客户端可以打开新连接并自动重新发送已中止的请求序列。

这里真正的问题是你处于客户端 - 服务器通信的某个阶段,服务器无法对上传的数据块提供任何反馈。最后一次机会是在从客户端读取标题之后,但是这不会给你显然想要的信息。您可以尝试通过单独的请求实施部分上传,但这会打开other problems。此外,你将失去宁静。

如果您愿意走这条路线,您可以从expectation negotiationchunk extensions等鲜为人知的功能中获益。可能两者都有。

按原样,你几乎没有成功的机会,例如PHP很难aborting uploads。 Python也是如此。如果自己运行,Node.js可以actually do this。然而,这种解决方案真的很苛刻,并且取决于客户是否非常宽容。