http1.1中是否有任何内容表明我无法在发送请求主体之前发送响应?

问题描述 投票:0回答:1

在http2中,您可以在请求的主体完全发送之前,向其发送标头响应。当然,然后您必须处理发送http 200 OK响应,然后在以后出现故障。这对我们很好。我想知道对于ndjson的流式上传情况,是否可以做到相同。在流完全发送之前发回响应。

即1.收到http1.1请求2.我们进行身份验证,如果成功,则当他们在3.在处理ndjson的流(每个记录)时,我们将成功或失败的流送回,以便它们可以轻松地从中断处取回]

然后,该解决方案允许他们发送1条记录或根据需要发送任意数量的记录。我知道我们有支持的Web服务器,但是不确定那里的所有客户端。我很好奇规范中是否有任何内容违反规范?]

谢谢,院长

http2 http-1.1
1个回答
0
投票

发送响应头之前也可以在HTTP / 1.1中读取请求内容。

事实上,从历史上讲,这在HTTP / 1.1中始终是可能的,并且HTTP / 2刚刚从其前身继承了此行为。

[典型情况是服务器应用程序产生意外错误(例如,在Java中为NullPointerException):服务器应用程序无法读取客户端仍在发送的请求内容(由于意外错误),并且服务器通常会产生一个响应500,指示它想要关闭连接。

[另一种典型情况是回显或转换服务器,您在其中上载了一些内容,这些内容会被即时回显或转换并发送回客户端。

代理是HTTP是全双工的事实的主要示例-代理在将请求内容发送到服务器之前不会缓冲请求内容,并且如果服务器在代理发送请求时进行答复,则代理不会缓冲请求内容。响应内容(等待请求完成)-它只是将响应内容发送到客户端。

虽然在规范中没有明确说明这种全双工行为,但它显然是在现实生活中发生的,因此客户端和服务器都应正确处理此情况。

如果我理解正确,则可以在HTTP之上使用JSON协议,以将服务器已处理的每个JSON块通知客户端。您基本上有一个带有“长”响应的“长”请求,这在任何体面的HTTP实现中都可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.