2010-01-13 6 views
3

Je soumets des requêtes HTTP POST via HttpWebRequest qui contiennent une grande quantité de contenu. Je voudrais gzip le contenu du message. Est-ce possible?gzip HttpWebRequest

IIS 7 doit-il être configuré pour gérer le contenu compressé? Il a déjà été configuré pour diffuser des réponses compressées.

J'ai essayé d'ajouter un en-tête Content-Encoding = gzip et d'écrire dans le flux de requête encapsulé dans un GZipStream mais le serveur renvoie un 504 (GatewayTimeout) qui semble étrange.

Répondre

1

La grande majorité des serveurs Web ne prennent pas en charge les corps de requête compressés. mod_deflate peut être configuré pour le supporter sur Apache mais rarement (comme une bombe zip est une attaque DoS potentielle facile). Je ne suis pas au courant d'une solution IIS.

Si vous parlez à votre propre serveur, il n'y a bien sûr rien qui vous empêche de faire la compression au niveau de l'application. Si vous devez passer un type de formulaire standard pour que le backend lise, vous devez choisir multipart/form-data car le codage d'URL risque de gonfler les données binaires du paramètre de contenu compressé.

4

Je ne pense pas que IIS7 supporte les requêtes GZIP, prêtes à l'emploi. Voici pourquoi. Sur ma machine IIS7, gzip.dll n'exporte pas les méthodes de décompression.

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 

Je pense que cela représente un changement de gzip.dll. Je crois aux versions antérieures de gzip.dll, il y avait 12 méthodes exportées, dont 6 qui ont décompressé.