http代理服务器(六)chunk

0

http1.0 短链接没有粘拆包,1.1长连接

 

1 如果一个HTTP消息(请求消息或应答消息)的Transfer-Encoding消息头的值为chunked,那么,消息体由数量未定的块组成,并以最后一个大小为0的块为结束。每一个非空的块都以该块包含数据的字节数(字节数以十六进制表示)开始,跟随一个CRLF (回车及换行),然后是数据本身,最后块CRLF结束。在一些实现中,块大小和CRLF之间填充有白空格(0x20)。最后一块是单行,由块大小(0),一些可选的填充白空格,以及CRLF。最后一块不再包含任何数据,但是可以发送可选的尾部,包括消息头字段。消息最后以CRLF结尾。

 

那次序呢?如果最后一块先于数据块到达;次序由tcp协议控制,只要发送端是顺序的。这与mq单线发送一定是顺序被mq服务器接收同理

 http://t.zoukankan.com/ribavnu-p-5084458.html

/**
* one of content_length and chunked in response header neccesary in http long connections
*/
if(!response.headers().contains("Transfer-Encoding") && !"chunked".equals(response.headers().get("Transfer-Encoding")))
response.headers().set(HttpHeaders.Names.CONTENT_LENGTH, response.content().readableBytes());

这一块不是每个网站需要 好像只有最初的arc网站需要,与逻辑相符

而且这一块理论上不应出现,当时arcadia有问题才加了这段

posted on 2022-11-25 11:15  silyvin  阅读(105)  评论(0编辑  收藏  举报