当您使用 ISA Server 2004 或 ISA Server 2006 作为 Web 代理时,网站发送的"401 身份验证必需"响应将被删除


症状


请考虑以下情况:
  • 您可以使用 Microsoft Internet 安全和加速 (ISA) 服务器 2004 或 ISA 服务器 2006 作为 Web 代理来访问网站。
  • 在网站上执行 POST 操作。
  • 网站向客户端发送"401 身份验证必需"响应。
但是,ISA 服务器会丢弃"401 身份验证必需"响应,而不是将响应转发到客户端。此问题可能会导致 Web 访问尝试失败。例如,当您尝试将大型文件上载到网站时,上载操作可能会超时。

解决方案


要解决此问题,请按照以下步骤操作:
  1. 如果您正在运行 ISA Server 2004,请应用以下 Microsoft 知识库文章中介绍的修补程序包:
    940709 ISA 服务器 2004 修补程序包说明: 2007 年 7 月 25 日
    如果您正在运行 ISA 服务器 2006,请应用最后一个 ISA 服务器服务包。有关详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
    954258如何获取最新的互联网安全和加速 (ISA) 服务器 2006 服务包
  2. 启动记事本。
  3. 复制以下代码,然后将其粘贴到记事本中。
    Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "AllowPrematureServerResponse"Const SE_VPS_VALUE = trueSub SetValue()    ' Create the root object.    Dim root  ' The FPCLib.FPC root object    Set root = CreateObject("FPC.Root")    'Declare the other objects that are needed.    Dim array       ' An FPCArray object    Dim VendorSets  ' An FPCVendorParametersSets collection    Dim VendorSet   ' An FPCVendorParametersSet object    ' Get references to the array object    ' and to 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
  4. 使用 .vbs 文件名扩展名将文件另存为 Microsoft Visual Basic 脚本文件。例如,使用以下名称保存文件:
    AllowPrematureServerResponse.vbs
  5. 启动命令提示,更改为保存"允许时间服务器响应.vbs"文件的位置,然后运行以下命令:
    cscript 允许早产服务器响应.vbs

状态


Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

更多信息


有关如何安装 ISA 服务器修补程序和更新的详细信息,请单击以下文章编号以查看 Microsoft 知识库中的文章:
885957如何安装 ISA 服务器修补程序和更新