ISA Server 2004, ISA Server 2006 or Windows Essential Business Server 2008 blocks requests that include the Accept-Encoding HTTP header when a forward proxy is used


Symptoms


On a server that is running Microsoft Internet Security and Acceleration (ISA) Server 2004 with Service Pack 2 or Windows Essential Business Server 2008, you disable the following two Web filters:
  • Compression Filter
  • Caching Compressed Content Filter
After you do this, ISA Server 2004 or Windows Essential Business Server 2008 blocks requests that include the Accept-Encoding HTTP header when a forward proxy is used.

These Web filters were introduced in ISA Server 2004 Service Pack 2 or in Windows Essential Business Server 2008. You might disable these Web filters because of program compatibility problems that involve some Web servers.

Resolution


Service pack information

To resolve this problem, install ISA Server 2004 Service Pack 3 (SP3), and then run the Microsoft Visual Basic script that is mentioned in this section. For more information about how to obtain the latest ISA Server 2004 service pack, click the following article number to view the article in the Microsoft Knowledge Base:

891024 How to obtain the latest ISA Server 2004 service pack

After you install the service pack, run the following script to enable a new configuration parameter. This new parameter lets ISA Server forward requests that include the Accept-Encoding HTTP header if the compression filters are disabled in a forward proxy scenario. To do this, follow these steps.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure. However, they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
  1. Click Start, point to All Programs, point to Accessories, and then click Notepad.
  2. Paste the following code into the Notepad document.
    Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"
    Const SE_VPS_NAME = "AccessRuleSendAcceptEncodingHeader"
    Const SE_VPS_VALUE = true

    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
    ' 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 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. Save the Notepad file as "AccessRuleSendAcceptEncodingHeader.vbs."
  4. Double-click the .vbs file to run the script.
To disable the new configuration parameter, follow these steps:
  1. Click Start, point to All Programs, point to Accessories, and then click Notepad.
  2. Paste the following code into the Notepad document.
    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. Save the Notepad file as "Disable_AccessRuleSendAcceptEncodingHeader.vbs."
  4. Double-click the .vbs file to run the script.

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.