2009-12-02 24 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服務器問題。