大型HTTP信封是否分散在多个部分http请求中?

时间:2017-09-08 06:41:51

标签: http

我正在阅读查看不同Web服务体系结构的book,其中包括如何通过HTTP实现SOAP协议的概述。这对我很有意思,因为我做了很多WCF开发,并没有意识到如何实现客户端/服务器通信。

由于像TCP这样的协议和低于它的协议都有固定的最大数据包大小,因此必须将消息拆分成数据包,我只是假设HTTP类似。那不是这样吗?

即。如果我使用20MB的主体发出GET / POST请求,是否会在服务器上发送并重新组装一个HTTP信封?

如果是这种情况,http请求的最大实际大小是多少?我以前配置了Nginx服务器以允许20mb文件传输,我想知道这是否太高......

2 个答案:

答案 0 :(得分:1)

HTTP正文可以根据您的需要大小,没有下载大小限制,通常会为上传设置大小限制,以防止有人将大量文件上传到您的服务器。

如果您只想要部分资源,可以使用Range标题来请求资源的一部分。

IE有时限制为2 GB和4 GB,但这些已经修复了。 Source

答案 1 :(得分:1)

从HTTP规范的角度来看,HTTP有效负载没有限制。根据{{​​3}}:

  

任何大于或等于零的Content-Length字段值都有效。由于对有效负载的长度没有预定义的限制,因此接收方必须预期可能存在大的十进制数字,并防止因整数转换溢出而导致的解析错误。

但是,为防止通过非常长或非常慢的数据流进行攻击,Web服务器可能会拒绝此类HTTP请求并返回413 Payload Too Large响应。

"由于像TCP这样的协议以及其他低于固定最大数据包大小的协议,因此必须将消息拆分成数据包,我只是假设HTTP类似。是不是这样?"

没有。 HTTP是一种应用程序级协议,完全不同。由于HTTP基于TCP,当数据传输时,它将自动拆分为TCP级别的数据包。无需在HTTP级别上拆分请求。