2010-01-13 79 views
3

我通過HttpWebRequest提交包含大量內容的HTTP POST請求。我想gzip郵件內容。這可能嗎?gzip HttpWebRequest

是否必須配置IIS 7以處理壓縮內容?它已被配置爲提供壓縮響應。

我試着添加一個Content-Encoding = gzip頭並寫入封裝在GZipStream中的請求流,但服務器返回一個504(GatewayTimeout),這看起來很奇怪。

回答

1

絕大多數Web服務器不支持壓縮的請求體。 mod_deflate可以配置爲在Apache上支持它,但實際上很少(因爲zip-bomb是一個簡單的潛在DoS攻擊)。我不知道IIS解決方案。

如果您正在與自己的服務器通話,那麼當然在應用程序級別上沒有任何事情阻止您進行壓縮。如果您必須通過標準表單類型來讀取後端,您應該選擇multipart/form-data,因爲URL編碼會膨脹壓縮內容參數的二進制數據。

4

我不相信IIS7支持GZIP請求,開箱即用。這是爲什麼。在我的IIS7機器上,gzip.dll不會導出解壓縮方法。

c:\Windows\System32\inetsrv>c:\vc9\bin\dumpbin.exe -exports gzip.dll 
Microsoft (R) COFF/PE Dumper Version 9.00.30729.01 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file gzip.dll 

File Type: DLL 

    Section contains the following exports for gzip.dll 

    00000000 characteristics 
    47919400 time date stamp Sat Jan 19 01:09:04 2008 
     0.00 version 
      1 ordinal base 
      6 number of functions 
      6 number of names 

    ordinal hint RVA  name 

      1 0 0000242D Compress 
      2 1 00002E13 CreateCompression 
      3 2 000065AE DeInitCompression 
      4 3 000012EE DestroyCompression 
      5 4 0000658D InitCompression 
      6 5 000065B6 ResetCompression 

    Summary 

     1000 .data 
     1000 .reloc 
     1000 .rsrc 
     6000 .text 

我認爲這代表了gzip.dll的變化。我相信在以前的gzip.dll版本中,有12個導出的方法,其中包括6個進行解壓縮的方法。