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

Python zlib gzip decompression fails with string compressed on client side via pako

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

Error -3 while decompressing: incorrect header check

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

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 压缩的字符串很重要(如所述 in this thread and the zlib docs)所以我使用了 paco 用于压缩的相同内容(31).

我也尝试过不使用任何 windowBits 并在 Python 中使用 zlib.MAX_WBITS|16zlib.MAX_WBITS|32,但失败并出现相同的错误。

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

非常感谢help/hint!

zlib_window_sizedecompress() 移动到 decompressobj()。或者干脆去掉 decompressobj()。一次 decompress().

调用不需要它