2016-10-20 22 views
1

私は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 threadzlib docs)として認識するために重要なので、pacoが圧縮に使用するのと同じものを使用しました(31)。

windowBitszlib.MAX_WBITS|16またはzlib.MAX_WBITS|32と一緒にPythonで試したところ、同じエラーで失敗しました。

サーバー側アプリケーションはTornadoで実行されています。

ヘルプ/ヒントは大変ありがとうございます。

答えて

1
decompressobj()decompress()から zlib_window_sizeを移動

。または、decompressobj()を取り除くだけです。あなたはdecompress()の単一の呼び出しのためにそれを必要としません。

+0

ありがとうございました。 'decompressobj() 'に' window_size'パラメータとして '31'を指定すると、どうにかしてトリックが実行されました。 – gruentee

関連する問題