我正在使用Amazon S3来提供静态文件。当Content-Type只是'text / css'并且我没有压缩文件时,它会被返回ok。如果我尝试zlib.compress()将返回的内容并将Content-Encoding更改为'gzip',则浏览器无法解码结果。在Chrome中,错误是
Error 330 net::ERR_CONTENT_DECODING_FAILED
在Safari中,
“cannot decode raw data” (NSURLErrorDomain:-1015)
与python的zlib有什么特别之处,以确保浏览器可以返回和解压缩结果吗?
答案 0 :(得分:5)
我有同样的问题。
如果您发送标题:
Content-Encoding: gzip
Safari / Chrome显示错误。
但如果您改为发送:
Content-Encoding: deflate
Safari / Chrome解码输入正常。
答案 1 :(得分:2)
答案 2 :(得分:0)
可解码。问题在于发送者对接收者说谎 - 这不是确保和谐沟通的好方法。尝试将其称为“zlib”而不是“gzip”。
答案 3 :(得分: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
兼容;我不知道它是否也解决了你的网络服务器问题。