現象
ユーザーが Microsoft インターネット セキュリティとアクセラレータ (ISA) Server 2006、ISA Server 2006 SP1、または Windows Essential ビジネス サーバー 2008 で公開されている SharePoint Web サイトにアクセスすると、次のいずれかのエラーメッセージが表示されることがあります。
HTTP 401 権限がありません
エラー メッセージ 2
HTTP 500 サーバーは、指定された統一リソース ロケータ (URL) を拒否しました。サーバー管理者に問い合わせてください。
この問題は、次の条件に当てはまる場合に発生します。
-
SharePoint Web 公開ルールが使用する Web リスナーで、HTML フォーム認証が構成されます。
-
Web クライアントは、SHAREPoint Web サイトに POST 要求を送信します。
-
POST 要求の URL に拡張文字が含まれています。たとえば、URL には é、à、または é が含まれます。
原因
この問題は、ISA Server または Windows Essential ビジネス サーバー 2008 が拡張文字を含む URL を解析できないために発生します。この場合、ISA Server または Windows エッセンシャル ビジネス サーバー 2008 は、クライアントが送信する POST 要求を拒否します。
解決方法
この問題を解決するには、次の手順を実行します。
-
マイクロソフト サポート技術情報の文書番号 940250 に記載されている修正プログラムを適用します。詳細については、次のサポート技術情報番号をクリックしてください。
940250 ISA Server 2006 修正プログラム パッケージの説明: 2007 年 7 月 16 日
-
メモ帳に次のスクリプトをコピーします。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 ファイル名拡張子を使用して、ファイルを 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
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。