HTTP通讯过程中,是客户端还是服务端主动断开连接?

146 2月之前 HTTP

答案

不考虑keepalive的情况下,

http1.0
  • content-length,body长度可知,客户端在接收body时,就可以依据这个长度来接受数据。接受完毕后,就表示这个请求完毕了。客户端主动调用close进入四次挥手。
  • 不带content-length,body长度不可知,客户端一直接受数据,直到服务端主动断开
http1.1
  • content-length body长度可知 客户端主动断开
  • Transfer-encoding:chunked body会被分成多个块,每块的开始会标识出当前块的长度,body就不需要通过content-length来指定了。但依然可以知道body的长度 客户端主动断开
  • 不带Transfer-encoding:chunked且不带content-length 客户端接收数据,直到服务端主动断开连接

即 :如果能够有办法知道服务器传来的长度,都是客户端首先断开。如果不知道就一直接收数据。知道服务端断开。

参考资料