「 HTTP 400-錯誤的要求 (要求標頭太長) 」 的錯誤在網際網路資訊服務 (IIS)

請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。

按一下這裡查看此文章的英文版本:2020943
徵狀

網域使用者嘗試瀏覽至網站裝載網際網路資訊服務 (IIS) 6.0 上或更高,使用 Internet Explorer 6.0 或更新版本。 網站設定為使用 Kerberos 驗證。 而不是接收預期的網頁,使用者會看到類似下列的錯誤訊息:

HTTP 400-錯誤的要求 (太長的要求標頭)

發生的原因

使用者是許多 Active Directory 使用者群組的成員時,可能會發生這個問題。當使用者屬於大量 active directory 群組使用者增加的大小的 Kerberos 驗證語彙基元。使用者傳送至 IIS 伺服器的 HTTP 要求包含 WWW 驗證標頭中的 Kerberos 語彙基元和標頭大小會隨著您往上移的群組數目增加。 如果 HTTP 標頭或封包大小增加超過在 IIS 中設定的限制,IIS 就可能會拒絕的要求,並為回應傳送這個錯誤。

解決方案

若要解決這個問題,請選擇一個下列其中一個選項:

A) 減少 Active Directory 群組的使用者所屬的成員數目。

OR

B) 修改 MaxFieldLength 和 MaxRequestBytes 登錄設定值,IIS 伺服器上的所以使用者的要求標頭不會被認定太長。 若要判斷適當的設定值,MaxFieldLength 和 MaxRequestBytes 登錄項目,請使用下列計算:

    1. 計算使用下列的文件所述的公式的使用者的 Kerberos 語彙基元大小:

      當使用者屬於多個群組時,新的解析度,對於問題 Kerberos 驗證
      http://support.microsoft.com/kb/327825


    2. 設定值為 IIS 伺服器上的 MaxFieldLength 和 MaxRequestBytes 登錄機碼4/3 * T,其中T是使用者的語彙基元大小,以位元組為單位。HTTP 編碼 Kerberos 語彙基元使用 base64 編碼方式,並因此取代每個與 4 base64 權杖中的 3 個位元組編碼位元組。 對登錄所做的變更將不才會生效,直到您重新啟動的 HTTP 服務。此外,您可能必須重新啟動任何相關的 IIS 服務。

注意: 根據您的應用程式環境,您可能也考慮設定網站,而不是 Kerberos 使用 NTLM,來解決這個問題。 某些應用程式環境需要 Kerberos 来用於委派的目的,Kerberos 是 NTLM,比更安全的所以建議您不要不停用 Kerberos 考慮這樣做的安全性和委派的細節之前,先。


其他相關資訊

根據預設,MaxFieldLength 登錄項目不存在。此登錄項目會指定每個 HTTP 要求標頭的最大的大小限制。MaxRequestBytes 登錄項目指定要求列和標頭的總大小的上限。一般而言,此登錄項目已加上 MaxRequestBytes 登錄項目。如果 MaxRequestBytes 值低於 MaxFieldLength 值,則會調整的 MaxFieldLength 值。 在大型的 Active Directory 環境中,使用者可能會遇到登入失敗,如果這些項目值不會設定為 [相當高的值。

對於網際網路資訊服務 (IIS) 6.0 及更新版本,MaxFieldLength 和 MaxRequestBytes 登錄機碼位於HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters。 下表所示設定它們:

名稱

實值型別

數值資料

MaxFieldLength

DWORD

(4/3 * T 位元組) + 200

MaxRequestBytes

DWORD

(4/3 * T 位元組) + 200

或者,您可能會為其最大值,如下所示設定登錄機碼。如果他對登錄設定任何所做的變更,系統管理員應該考慮所有潛在的安全性細節:

 

名稱

實值型別

數值資料

MaxFieldLength

DWORD

65534

MaxRequestBytes

DWORD

16777216

重要: 變更這些登錄機碼可視為風險極大。這些機碼允許較大的 HTTP 封包,傳送至 IIS,依序可能會導致 Http.sys 使用更多記憶體,而且可能會增加遭受惡意攻擊的機會。

附註:如果 MaxFieldLength 設定為 64 KB,其最大值,那麼 MaxTokenSize 的登錄值應該設定為 3/4 * 64 = 48 KB。 如需有關 [MaxTokenSize] 設定的詳細資訊,請參閱 Microsoft 知識庫文件,如下所示 KB327825。

在下列位置,就可以找到有關本文所討論的主題的詳細資訊:

IIS 的 Http.sys 登錄設定
http://support.microsoft.com/kb/820129/en-us

登入 HTTP API 的錯誤
http://support.microsoft.com/?id=820729

新的解析度,對於 Kerberos 驗證,當使用者屬於多個群組時的問題
http://support.microsoft.com/kb/327825

當 Outlook Web Access 使用者嘗試存取信箱,以在 Exchange Server 2003年中的錯誤訊息
http://support.microsoft.com/kb/920862

警告:本文為自動翻譯

內容

文章識別碼:2020943 - 最後檢閱時間:10/26/2015 17:28:00 - 修訂: 1.0

  • kbmt KB2020943 KbMtzh
意見反應