ISA Server 2004, ISA Server 2006 o Windows Essential Business Server 2008 bloquean solicitudes que incluyen el encabezado HTTP Accept-Encoding cuando se usa un proxy de reenvío


Síntomas


En un servidor que ejecuta Microsoft Internet Security and Acceleration (ISA) Server 2004 con Service Pack 2 o Windows Essential Business Server 2008, deshabilita los dos filtros web siguientes:
  • Filtro de compresión
  • Filtro de contenido comprimido en caché
Después de hacerlo, ISA Server 2004 o Windows Essential Business Server 2008 bloquea las solicitudes que incluyen el encabezado HTTP Accept-Encoding cuando se usa un proxy de reenvío. Estos filtros web se introdujeron en el Service Pack 2 de ISA Server 2004 o en Windows Essential Business Server 2008. Puede deshabilitar estos filtros web debido a problemas de compatibilidad de programas que implican algunos servidores Web.

Resolución


Información de Service Pack

Para resolver este problema, instale ISA Server 2004 Service Pack 3 (SP3) y, a continuación, ejecute el script de Microsoft Visual Basic que se menciona en esta sección. Para obtener más información sobre cómo obtener el Service Pack 2004 de ISA Server más reciente, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
891024 Cómo obtener el Service Pack más reciente de ISA Server 2004
Después de instalar el Service Pack, ejecute el siguiente script para habilitar un nuevo parámetro de configuración. Este nuevo parámetro permite a ISA Server Reenviar solicitudes que incluyen el encabezado HTTP Accept-Encoding en caso de que los filtros de compresión estén deshabilitados en un escenario de proxy de reenvío. Para ello, siga estos pasos. Microsoft proporciona ejemplos de programación para la ilustración únicamente, sin ninguna garantía ya sea expresa o implícita. Esto incluye, entre otras, las garantías implícitas de comerciabilidad o idoneidad para un fin determinado. En este artículo se da por supuesto que está familiarizado con el lenguaje de programación que se muestra y con las herramientas que se usan para crear y depurar procedimientos. Los ingenieros de soporte técnico de Microsoft pueden ayudar a explicar la funcionalidad de un procedimiento en particular. Sin embargo, no modificarán estos ejemplos para proporcionar una funcionalidad agregada ni crear procedimientos que cumplan con sus necesidades específicas.
  1. Haga clic en Inicio, seleccione todos los programas, accesoriosy, a continuación, haga clic en Bloc de notas.
  2. Pegue el código siguiente en el documento del Bloc de notas.
    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. Guarde el archivo del Bloc de notas como "AccessRuleSendAcceptEncodingHeader. vbs".
  4. Haga doble clic en el archivo. vbs para ejecutar el script.
Para deshabilitar el nuevo parámetro de configuración, siga estos pasos:
  1. Haga clic en Inicio, seleccione todos los programas, accesoriosy, a continuación, haga clic en Bloc de notas.
  2. Pegue el código siguiente en el documento del Bloc de notas.
    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. Guarde el archivo del Bloc de notas como "Disable_AccessRuleSendAcceptEncodingHeader. vbs".
  4. Haga doble clic en el archivo. vbs para ejecutar el script.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".