我向远程服务发出HTTP POST请求,要求邮件正文“缩小”(并且Content-encoding: deflate
应该在标头中发送)。根据我的理解,RFC 1950涵盖了这一点。我应该使用哪种PHP功能兼容?
答案 0 :(得分:2)
Content-Encoding: deflate
要求提供数据using the zlib structure (defined in RFC 1950), with the deflate compression algorithm (defined in RFC 1951)。
考虑
<?php
$str = 'test';
$defl = gzdeflate($str);
echo bin2hex($defl), "\n";
$comp = gzcompress($str);
echo bin2hex($comp), "\n";
?>
这给了我们:
2b492d2e0100
789c2b492d2e0100045d01c1
所以gzcompress
结果是前面有gzdeflate
的{{1}}'缓冲区,它似乎是一个有效的zlib标头
789c
后跟4个字节的校验和。这就是我们正在寻找的。 p>
总结一下,
0111 | 1000 | 11100 | 0 | 10
CINFO | CM | FCHECK | FDICT | FLEVEL
7=32bit | 8=deflate | | no dict | 2=default algo
返回原始缩减缓冲区(RFC 1951)gzdeflate
返回包含在zlib stuff(RFC 1950)gzcompress
需要一个包装缓冲区,即在发送缩减数据时使用Content-Encoding: deflate
。请注意,令人困惑的命名:gzcompress
不 gzdeflate
而Content-Encoding: deflate
<{1}}。去搞清楚!