私はJSライブラリpakoでブラウザでgzipしたサーバー(Pythonのzlib)側でJSONオブジェクトの解凍を行います。圧縮された文字列は、XHRを介してサーバーに送信されます。 残念ながら、サーバー側のPythonアプリケーションはPython zlib gzip解凍が、クライアント側でpakoで圧縮された文字列で失敗します
エラーで失敗-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圧縮されたもの(in this threadとzlib docs)として認識するために重要なので、pacoが圧縮に使用するのと同じものを使用しました(31
)。
windowBits
とzlib.MAX_WBITS|16
またはzlib.MAX_WBITS|32
と一緒にPythonで試したところ、同じエラーで失敗しました。
サーバー側アプリケーションはTornadoで実行されています。
ヘルプ/ヒントは大変ありがとうございます。
ありがとうございました。 'decompressobj() 'に' window_size'パラメータとして '31'を指定すると、どうにかしてトリックが実行されました。 – gruentee