http 协议的结束符 · Issue #34 · jinhailang/blog · GitHub
http 协议的结束符 突然想起很久之前一次面试,面试官问我,当请求头没有 content-length 时,怎么知道请求体结束了? http 的 header 和 body 之间空行分割的,又因为每个头部项是以 \r\n 作为结束符,所以,数据流中是以 \r\n\r\n 来分割解析请求头(响应头)与请求体(响应体)的。如下图所示: 那么怎么知道(请求体)响应体结束了呢? http 协议规定,响应头的字段 content-length 用来表示响应体长度大小,但是,有可能发送请求头时,并不能知道完整的响应体长度(比如当响应数据太大,服务端流式处理的情况),这时需要设置请求头Transfer-Encoding: chunked,使用数据块的方式传输,数据块格式如下图所示: 每个数据块分为两个部...阅读全文