5

Amazon S3 を使用して静的ファイルを提供しています。Content-Type が 'text/css' で、ファイルを圧縮していない場合、正常に返されます。返されるコンテンツを zlib.compress() して Content-Encoding を「gzip」に変更しようとすると、ブラウザーは結果をデコードできません。Chromeでは、エラーは

Error 330 net::ERR_CONTENT_DECODING_FAILED

サファリで、

“cannot decode raw data” (NSURLErrorDomain:-1015)

結果がブラウザによって返され、解凍されることを確認するために、python の zlib と何か特別なことはありますか?

4

4 に答える 4

5

私はこれと同じ問題を抱えています。

ヘッダーを送信する場合:

Content-Encoding: gzip

Safari/Chrome でそのエラーが表示されます。

しかし、代わりに以下を送信すると:

Content-Encoding: deflate

Safari/Chrome は入力をうまくデコードします。

于 2010-04-26T14:58:35.510 に答える
2

gzipはzlibと同じではありません。

于 2009-12-02T20:34:59.597 に答える
0

デコード可能です。問題は、送信者が受信者に嘘をついているということです。これは、調和のとれたコミュニケーションを保証する良い方法ではありません。「gzip」ではなく「zlib」と呼んでみてください。

于 2009-12-02T22:43:59.017 に答える
0

モジュールを使用する代わりにzlib(originalString = inputFile.read()そしてcompressedString = zlib.compress(originalString)) モジュールを使用していますgzip:

stream = cStringIO.StringIO()
compressor = gzip.GzipFile(fileobj=stream, mode='w')
while True:  # until EOF
    chunk = inputFile.read(8192)
    if not chunk:  # EOF?
        compressor.close()
        return stream.getvalue()
    compressor.write(chunk)

結果は互換性がgzipあります。Web サーバーの問題も解決するかどうかはわかりません。

于 2013-01-15T17:07:23.493 に答える