ISA Server 2004, ISA Server 2006 ou Windows Essential Business Server 2008 bloque les requêtes incluant l’en-tête HTTP Accept-Encoding lors de l’utilisation d’un proxy de transfert


Symptômes


Sur un serveur exécutant Microsoft Internet Security and Acceleration (ISA) Server 2004 avec Service Pack 2 ou Windows Essential Business Server 2008, vous désactivez les deux filtres Web suivants :
  • Filtre de compression
  • Mettre en cache du contenu compressé
Une fois cette opération terminée, ISA Server 2004 ou Windows Essential Business Server 2008 bloque les requêtes incluant l’en-tête HTTP Accept-Encoding lors de l’utilisation d’un proxy de transfert. Ces filtres Web ont été introduits dans ISA Server 2004 Service Pack 2 ou Windows Essential Business Server 2008. Vous pouvez désactiver ces filtres Web en raison de problèmes de compatibilité liés à certains serveurs Web.

Résolution


Informations sur le Service Pack

Pour résoudre ce problème, installez ISA Server 2004 Service Pack 3 (SP3), puis exécutez le script Microsoft Visual Basic mentionné dans cette section. Pour plus d’informations sur la façon d’obtenir le dernier Service Pack ISA Server 2004, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
891024 Obtention du dernier Service Pack ISA Server 2004
Après avoir installé le Service Pack, exécutez le script suivant pour activer un nouveau paramètre de configuration. Ce nouveau paramètre permet à ISA Server de transférer les demandes incluant l’en-tête HTTP Accept-Encoding si les filtres de compression sont désactivés dans un scénario de proxy de transfert. Pour cela, procédez comme suit. Microsoft fournit des exemples de programmation uniquement à des fins d’illustration, sans garantie, expresse ou implicite. Cela comprend, sans s’y limiter, les garanties implicites en matière de qualité marchande ou d’adéquation à un but particulier. Cet article part du principe que vous êtes familiarisé avec le langage de programmation présenté et avec les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent vous permettre d’expliquer les fonctionnalités d’une procédure particulière. Toutefois, ils ne pourront pas modifier ces exemples pour fournir des fonctionnalités ajoutées ou des procédures de construction qui répondent à vos exigences spécifiques.
  1. Cliquez sur Démarrer, pointez sur tous les programmes, sur accessoires, puis cliquez sur bloc-notes.
  2. Collez le code suivant dans le document bloc-notes.
    Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "AccessRuleSendAcceptEncodingHeader"Const SE_VPS_VALUE = trueSub SetValue()    ' Create the root obect.    Dim root  ' The FPCLib.FPC root object    Set root = CreateObject("FPC.Root")    'Declare the other objects needed.    Dim array       ' An FPCArray object    Dim VendorSets  ' An FPCVendorParametersSets collection    Dim VendorSet   ' An FPCVendorParametersSet object    ' Get references to the array object    ' and the network rules collection.    Set array = root.GetContainingArray    Set VendorSets = array.VendorParametersSets    On Error Resume Next    Set VendorSet = VendorSets.Item( SE_VPS_GUID )    If Err.Number <> 0 Then        Err.Clear        ' Add the item        Set VendorSet = VendorSets.Add( SE_VPS_GUID )        CheckError        WScript.Echo "New VendorSet added... " & VendorSet.Name    Else        WScript.Echo "Existing VendorSet found... value- " &  VendorSet.Value(SE_VPS_NAME)    End If    if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then        Err.Clear        VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE        If Err.Number <> 0 Then            CheckError        Else            VendorSets.Save false, true            CheckError            If Err.Number = 0 Then                WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"            End If        End If    Else        WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"    End IfEnd SubSub CheckError()    If Err.Number <> 0 Then        WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description        Err.Clear    End IfEnd SubSetValue
  3. Enregistrez le fichier de bloc-notes en tant que « AccessRuleSendAcceptEncodingHeader. vbs ».
  4. Double-cliquez sur le fichier. vbs pour exécuter le script.
Pour désactiver le nouveau paramètre de configuration, procédez comme suit :
  1. Cliquez sur Démarrer, pointez sur tous les programmes, sur accessoires, puis cliquez sur bloc-notes.
  2. Collez le code suivant dans le document bloc-notes.
    Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}" Const SE_VPS_NAME = "AccessRuleSendAcceptEncodingHeader" Const SE_VPS_VALUE = false Sub SetValue()      ' Create the root obect.      Dim root ' The FPCLib.FPC root object      Set root = CreateObject("FPC.Root")      'Declare the other objects needed.      Dim array ' An FPCArray object      Dim VendorSets ' An FPCVendorParametersSets collection      Dim VendorSet   ' An FPCVendorParametersSet object           ' Get references to the array object      Set array = root.GetContainingArray      Set VendorSets = array.VendorParametersSets      On Error Resume Next      Set VendorSet = VendorSets.Item( SE_VPS_GUID )      If Err.Number <> 0 Then           Err.Clear           ' Add the item           Set VendorSet = VendorSets.Add( SE_VPS_GUID )           CheckError           WScript.Echo "New VendorSet added... " & VendorSet.Name      Else           WScript.Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)      End If      if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE           Then Err.Clear VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE           If Err.Number <> 0 Then                 CheckError           Else                 VendorSets.Save false, true                 CheckError                 If Err.Number = 0 Then                      WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"                 End If           End If      Else           WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"      End If End Sub Sub CheckError()      If Err.Number <> 0 Then           WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description Err.Clear      End If End Sub SetValue
  3. Enregistrez le fichier de bloc-notes en tant que « Disable_AccessRuleSendAcceptEncodingHeader. vbs ».
  4. Double-cliquez sur le fichier. vbs pour exécuter le script.

Statut


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.