Python zlib gzip 解压失败,字符串通过 pako 在客户端压缩

问题描述 投票:0回答:1

我想在服务器端(使用 Python 的 zlib)解压一个 JSON 对象,我使用 JS 库 pako 在浏览器中压缩了该对象。压缩后的字符串通过XHR发送到服务器。 不幸的是,服务器端 Python 应用程序失败并显示

解压时出现错误-3:标头检查不正确

我用于客户端压缩的代码:

var json = JSON.stringify(data);
var zlibOpts = {
    level: 9,
    to: 'string'
};
data = pako.gzip(json, zlibOpts);

服务器端代码:

zlib_window_size = 31
result = zlib.decompressobj().decompress(data, zlib_window_size)

我发现

windowBits
对于zlib将字符串识别为gzip压缩非常重要(如本线程zlib文档所述),所以我使用了paco用于压缩的相同内容(31
)。

我也尝试过在 Python 中不使用任何

windowBits

 并使用 
zlib.MAX_WBITS|16
zlib.MAX_WBITS|32
,但会失败并出现相同的错误。

服务器端应用程序在 Tornado 上运行。

非常感谢任何帮助/提示!

javascript python compression gzip zlib
1个回答
1
投票

zlib_window_size

decompress()
 移至 
decompressobj()
。或者干脆去掉 
decompressobj()
。您不需要一次调用 
decompress()

© www.soinside.com 2019 - 2024. All rights reserved.