我想在服务器端(使用 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 上运行。
非常感谢任何帮助/提示!
zlib_window_size
从
decompress()
移至
decompressobj()
。或者干脆去掉
decompressobj()
。您不需要一次调用
decompress()
。