5

我正在使用 Amazon S3 提供静态文件。当 Content-Type 只是 'text/css' 并且我没有压缩文件时,它会正常返回。如果我尝试 zlib.compress() 将返回的内容并将 Content-Encoding 更改为“gzip”,浏览器将无法解码结果。在 Chrome 中,错误是

Error 330 net::ERR_CONTENT_DECODING_FAILED

在 Safari 中,

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

python的zlib是否有什么特别的事情可以确保浏览器可以返回和解压结果?

4

4 回答 4

5

I have this same problem.

If you send the header:

Content-Encoding: gzip

Safari/Chrome show that error.

But if you instead send:

Content-Encoding: deflate

Safari/Chrome decodes the input fine.

于 2010-04-26T14:58:35.510 回答
2

gzip is not the same as zlib.

于 2009-12-02T20:34:59.597 回答
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; 我不知道它是否也解决了您的网络服务器问题。

于 2013-01-15T17:07:23.493 回答
0

它是可解码的。问题是发送者对接收者撒谎——这不是确保和谐沟通的好方法。尝试将其称为“zlib”而不是“gzip”。

于 2009-12-02T22:43:59.017 回答