Microsoft KB Archive/927263

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Knowledge Base


ISA Server 2004 blocks requests that include the Accept-Encoding HTTP header when a forward proxy is used

Article ID: 927263

Article Last Modified on 12/4/2007



APPLIES TO

  • Microsoft Internet Security and Acceleration Server 2004 Standard Edition Service Pack 2, when used with:
    • Microsoft Internet Security and Acceleration Server 2004 Standard Edition
    • Microsoft Internet Security and Acceleration Server 2004 Enterprise Edition



SYMPTOMS

On a server that is running Microsoft Internet Security and Acceleration (ISA) Server 2004 with Service Pack 2, you disable the following two Web filters:

  • Compression Filter
  • Caching Compressed Content Filter

After you do this, ISA Server 2004 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. 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.

Keywords: kbtshoot kbprb kbexpertiseadvanced KB927263