증상
사용자가 Microsoft 인터넷 보안 및 가속(ISA) 서버 2006, ISA 서버 2006 SP1 또는 Windows 필수 비즈니스 서버 2008에 게시된 SharePoint 웹 사이트에 액세스하면 사용자는 다음 오류 메시지 중 하나를 수신할 수있습니다.
HTTP 401 무단
오류 메시지 2
HTTP 500 서버가 지정된 균일 리소스 로케이터(URL)를 거부했습니다. 서버 관리자에게 문의하십시오.
이 문제는 다음과 같은 경우 발생합니다.
-
SharePoint 웹 게시 규칙이 사용하는 웹 수신기에서 HTML 양식 인증이 구성됩니다.
-
웹 클라이언트는 Post 요청을 SharePoint 웹 사이트로 보냅니다.
-
POST 요청의 URL에는 확장 문자가 포함되어 있습니다. 예를 들어 URL에는 é, à 또는 è가 포함됩니다.
원인
ISA 서버 또는 Windows 필수 비즈니스 서버 2008 확장 된 문자를 포함 하는 URL을 구문 분석할 수 없기 때문에이 문제가 발생 합니다. 이 경우 ISA 서버 또는 Windows 필수 비즈니스 서버 2008 클라이언트가 보내는 POST 요청을 거부합니다.
해결 방법
이 문제를 해결하려면 다음과 같이 하십시오.
-
Microsoft 기술 자료 문서 940250에 설명된 핫픽스를 적용합니다. 자세한 내용은 다음 문서 번호를 클릭하여 Microsoft 기술 자료의 문서를 봅니다.
940250 ISA 서버 2006 핫픽스 패키지 설명: 2007년 7월 16일
-
다음 스크립트를 메모장에복사: ISA Server 2006에서 이 문제를 해결하려면 다음 스크립트를 사용하십시오. ISA Server 2006 SP1에 대해 이 문서에서 핫픽스를 적용할 필요는 없지만 스크립트를 사용해야 합니다.
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "CookieFilterDecodeUEncoding"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
-
.vbs 파일 이름 확장명을 사용하여 파일을 Microsoft Visual Basic 스크립트 파일로 저장합니다. 예를 들어 다음 이름을 사용하여 파일을 저장합니다.
EnableKB940248.vbs
-
명령 프롬프트에서 EnableKB940248.vbs 파일을 저장한 위치로 이동합니다.
-
다음 명령을 실행합니다.
cscript 인에이블KB940248.vbs
참고 사항 이 단계를 수행하면 URL의 쿼리 부분만 확장 문자를 포함할 수 있습니다. 쿼리 부분은 URL의 물음표(?)를 따릅니다. URL의 물음표 앞에 오는 부분은 이 해상도를 사용한 후에도 확장 문자를 포함할 수 없습니다. 5단계에서 스크립트를 실행할 때 수행된 변경 내용을 제거하려면 다음 스크립트를 실행하십시오.
Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "CookieFilterDecodeUEncoding"Const SE_VPS_VALUE = FalseSub SetValue()' Create the root object.Dim root ' The FPCLib.FPC root objectroot = CreateObject("FPC.Root")'Declare the other objects that are needed.Dim array ' An FPCArray objectDim VendorSets ' An FPCVendorParametersSets collectionDim VendorSet ' An FPCVendorParametersSet object' Get references to the array object' and to the network rules collection.array = root.GetContainingArrayVendorSets = array.VendorParametersSetsOn Error Resume NextVendorSet = VendorSets.Item(SE_VPS_GUID)If Err.Number <> 0 ThenErr.Clear()' Add the itemVendorSet = VendorSets.Add(SE_VPS_GUID)CheckError()WScript.Echo("New VendorSet added... " & VendorSet.Name)ElseWScript.Echo("Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME))End IfIf VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE ThenErr.Clear()VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUEIf Err.Number <> 0 ThenCheckError()ElseVendorSets.Save(False, True)CheckError()If Err.Number = 0 ThenWScript.Echo("Done with " & SE_VPS_NAME & ", saved!")End IfEnd IfElseWScript.Echo("Done with " & SE_VPS_NAME & ", no change!")End IfEnd SubSub CheckError()If Err.Number <> 0 ThenWScript.Echo("An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description)Err.Clear()End IfEnd SubSetValue Change to:[INSERT CORRECTION]Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "CookieFilterDecodeUEncoding"Const SE_VPS_VALUE = falseSub SetValue()' Create the root object.Dim root ' The FPCLib.FPC root objectSet root = CreateObject("FPC.Root")'Declare the other objects that are needed.Dim array ' An FPCArray objectDim VendorSets ' An FPCVendorParametersSets collectionDim VendorSet ' An FPCVendorParametersSet object' Get references to the array object' and to the network rules collection.Set array = root.GetContainingArraySet VendorSets = array.VendorParametersSetsOn Error Resume NextSet VendorSet = VendorSets.Item( SE_VPS_GUID )If Err.Number <> 0 ThenErr.Clear' Add the itemSet VendorSet = VendorSets.Add( SE_VPS_GUID )CheckErrorWScript.Echo "New VendorSet added... " & VendorSet.NameElseWScript.Echo "Existing VendorSet found... value- " & VendorSet.Value(SE_VPS_NAME)End Ifif VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE ThenErr.ClearVendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUEIf Err.Number <> 0 ThenCheckErrorElseVendorSets.Save false, trueCheckErrorIf Err.Number = 0 ThenWScript.Echo "Done with " & SE_VPS_NAME & ", saved!"End IfEnd IfElseWScript.Echo "Done with " & SE_VPS_NAME & ", no change!"End IfEnd SubSub CheckError()If Err.Number <> 0 ThenWScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.DescriptionErr.ClearEnd IfEnd SubSetValue
상태
Microsoft는 "적용 대상" 절에 나열한 제품에서 이 문제를 확인했습니다.