Ответ «401 проверка подлинности требуется», отправляемый веб-узлом, отбрасывается при использовании ISA Server 2004 или ISA Server 2006 в качестве веб-прокси


Проблемы


Рассмотрим следующий сценарий.
  • Вы используете сервер Microsoft Internet Security and Acceleration (ISA) 2004 или ISA Server 2006 в качестве веб-прокси для доступа к веб-узле.
  • Вы выполняете операцию POST на веб-узле.
  • Веб-узел отправляет клиенту ответ «401 проверка подлинности».
Тем не менее, ISA Server отбрасывает ответ «401 Authentication Required» вместо пересылки ответа клиенту. Эта проблема может привести к сбою в попытке доступа к Веб-сети. Например, при попытке загрузить большой файл на веб-узел операция загрузки может быть временной.

Решение


Чтобы устранить эту неполадку, выполните следующие действия:
  1. Если вы работаете под управлением ISA Server 2004, примените пакет hotfix, описанный в следующей статье Microsoft Knowledge Base:
    940709 Описание пакета hotfix СЕРВЕРа ISA 2004: 25 июля 2007
    Если вы работаете под управлением ISA Server 2006, примените последний пакет служб ISA Server. Для получения дополнительной информации, нажмите на следующий номер статьи, чтобы просмотреть статью в базе знаний Microsoft:
    954258 Как получить новейший пакет услуг По безопасности и ускорению интернета (ISA) Server 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. Сохранить файл в виде файла Microsoft Visual Basic, используя расширение имени файла .vbs. Например, используйте следующее имя для сохранения файла:
    AllowPrematureServerResponse.vbs
  5. Запустите запрос команды, измените место, в котором вы сохранили файл AllowPrematureServerResponse.vbs, а затем запустите следующую команду:
    cscript AllowPrematureServerResponse.vbs

Статус


Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".

Дополнительная информация


Для получения дополнительной информации о том, как установить hotfixes и обновления ISA Server, нажмите на следующий номер статьи, чтобы просмотреть статью в базе знаний Майкрософт:
885957 Как установить горячие фиксы и обновления сервера ISA