Hei*_*ing 33 gzip http chunked-encoding
我试图让我的网络服务器正确gzip一个块响应编码的http响应.
我对非gzip响应的理解是它看起来像这样:
<the response headers>
Run Code Online (Sandbox Code Playgroud)
然后对于每个块,
<chunk length in hex>\r\n<chunk>\r\n
Run Code Online (Sandbox Code Playgroud)
最后,一个零长度的块:
0\r\n\r\n
Run Code Online (Sandbox Code Playgroud)
我试图让gzip压缩工作,我可以使用一些帮助找出实际应该返回的内容.此文档暗示整个响应应该被gzip压缩,而不是gzipping每个块:
HTTP servers sometimes use compression (gzip) or deflate methods to optimize transmission.
Chunked transfer encoding can be used to delimit parts of the compressed object.
In this case the chunks are not individually compressed. Instead, the complete payload
is compressed and the output of the compression process is chunk encoded.
Run Code Online (Sandbox Code Playgroud)
我尝试gzip整个事情并返回响应,即使没有分块,它没有工作.我尝试将Content-Encoding标头设置为"gzip".有人可以解释必须对上述方案进行哪些更改才能支持gzipping的大小调整?谢谢.
sos*_*xme 33
如果其他答案不够明确:
首先你用zlib gzip body(这可以在一个流中完成,所以你不需要在内存中同时存在整个内容,这是整个分块的重点).
然后使用Content-Encoding:gzip和Transfer-Encoding:chunked标头(并且没有Content-Length)以块(可能是由gzip流提供的,以及块标头来声明它的长度)发送该压缩主体头).
如果您使用gzip或zcat或某些此类实用程序进行压缩,则可能无法正常工作.需要成为zlib.如果你正在创建块然后压缩它们,那肯定是行不通的.如果您认为自己正在做这件事并且无法正常工作,那么您可能会尝试进行数据包跟踪,并根据该问题以及您收到的任何错误消息提出问题.
Jul*_*hke 23
你gzip内容,然后才应用chunked编码:
"由于"chunked"是HTTP/1.1接收者需要理解的唯一传输编码,它在分隔持久连接上的消息方面起着至关重要的作用.每当传输编码应用于请求中的有效载荷主体时,应用的最终传输编码必须"分块".如果传输编码应用于响应有效载荷主体,则应用的最终传输编码必须"分块"或者必须通过关闭连接来终止消息.使用"分块"传输编码,它必须是用于形成消息体的最后一个传输编码."分块"传输编码绝不能在消息体中多次应用.
| 归档时间: |
|
| 查看次数: |
29547 次 |
| 最近记录: |