2009-12-02 81 views
5

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

Error 330 net::ERR_CONTENT_DECODING_FAILED 
在Safari

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

是不是有什么特别的与Python的zlib的做,以确保结果可以返回,并通过浏览器解压?

+0

下面是如何处理zlib库:http://stackoverflow.com/questions/2695152/in-python-how-do-i-decode-gzip-encoding – Ric 2015-03-06 02:47:26

回答

0

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

5

我有这个相同的问题。

如果您发送标题:

Content-Encoding: gzip 

Safari /铬显示错误。

但如果改为发送:

Content-Encoding: deflate 

Safari /铬解码输入罚款。

+0

谢谢!这让我害怕了。 – charleslparker 2013-11-20 19:39:44

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服务器问题。