Lỗi "HTTP 400 - Bad (yêu cầu tiêu đề yêu cầu quá dài)" trong dịch vụ thông tin Internet (IIS)

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch thuật của Microsoft và có thể được Cộng đồng Microsoft chỉnh sửa lại thông qua công nghệ CTF thay vì một biên dịch viên chuyên nghiệp. Microsoft cung cấp các bài viết được cả biên dịch viên và phần mềm dịch thuật thực hiện và cộng đồng chỉnh sửa lại để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng nhiều ngôn ngữ Tuy nhiên, bài viết do máy dịch hoặc thậm chí cộng đồng chỉnh sửa sau không phải lúc nào cũng hoàn hảo. Các bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này: 2020943
TRIỆU CHỨNG

Người dùng trong miền cố duyệt một trang web được lưu trữ trên Internet Information Services (IIS) 6.0 hoặc cao hơn bằng cách sử dụng Internet Explorer 6.0 hoặc mới hơn.  Các trang web được cấu hình để sử dụng xác thực Kerberos.  Thay vì nhận được các trang web dự kiến, người dùng được trình bày với thông báo lỗi tương tự như sau:

HTTP 400 - yêu cầu không hợp lệ (tiêu đề yêu cầu quá dài)

NGUYÊN NHÂN

Sự cố này có thể xảy ra khi người dùng là thành viên của nhóm nhiều người dùng Active Directory. Khi người dùng là thành viên của một số lớn của active directory nhóm mã thông báo xác thực Kerberos đối với người dùng tăng kích thước. Yêu cầu HTTP người dùng gửi đến máy chủ IIS chứa mã thông báo Kerberos trong tiêu đề xác thực WWW và kích thước tiêu đề tăng như số nhóm đi lên.  Nếu phần đầu HTTP hoặc gói kích thước tăng qua giới hạn cấu hình IIS, IIS có thể từ chối yêu cầu và gửi phản hồi lỗi này.

GIẢI PHÁP

Để khắc phục sự cố này, hãy chọn một trong các tuỳ chọn sau:

A) giảm số nhóm Active Directory người dùng là thành viên.

HOẶC

B) sửa đổi MaxFieldLength và cài đặt đăng ký MaxRequestBytes trên máy chủ IIS để tiêu đề yêu cầu người dùng không được coi là quá dài.  Để xác định thiết đặt phù hợp cho MaxFieldLength và các mục đăng ký MaxRequestBytes, sử dụng tính toán sau đây:

    1. Tính toán kích thước của người dùng Kerberos mã thông báo bằng cách sử dụng công thức mô tả trong bài viết sau đây:

      Xác thực các giải pháp mới cho các vấn đề với Kerberos khi người dùng thuộc nhiều nhóm
      http://support.microsoft.com/kb/327825


    2. Cấu hình MaxFieldLength và khóa registry MaxRequestBytes trên máy chủ IIS với giá trị4/3 * T, trong đó là kích thước mã thông báo của người dùng, tại byteHTTP mã hóa thẻ Kerberos sử dụng mã hoá base64 và do đó thay thế mỗi 3 byte trong mã thông báo với 4 base64 mã hóa byte.  Thay đổi được thực hiện đối với sổ đăng ký sẽ không có hiệu lực cho đến khi bạn khởi động lại dịch vụ HTTP. Ngoài ra, bạn có thể phải khởi động lại bất kỳ dịch vụ liên quan đến IIS.

Lưu ý: Tuỳ thuộc vào môi trường ứng dụng của bạn, bạn có thể cũng xem xét cấu hình trang web để sử dụng NTLM thay vì Kerberos để khắc phục sự cố này.  Một số môi trường ứng dụng yêu cầu Kerberos được sử dụng cho mục đích uỷ nhiệm và Kerberos là an toàn hơn NTLM, do đó, chúng tôi khuyên bạn không tắt Kerberos trước khi xem xét các chi nhánh bảo mật và uỷ nhiệm làm như vậy.


THÔNG TIN THÊM

Theo mặc định, mục đăng ký MaxFieldLength không có. Mục đăng ký này chỉ định giới hạn kích thước tối đa của mỗi tiêu đề yêu cầu HTTP. Mục đăng ký MaxRequestBytes chỉ định giới hạn tổng kích thước của dòng yêu cầu và tiêu đề. Thông thường, mục đăng ký này được cấu hình với mục đăng ký MaxRequestBytes. Nếu giá trị MaxRequestBytes thấp hơn giá trị MaxFieldLength, giá trị MaxFieldLength được điều chỉnh.  Trong môi trường Active Directory lớn, người dùng có thể gặp phải đăng nhập thất bại nếu giá trị cho các mục nhập này không được đặt thành giá trị đủ cao.

Đối với Internet Information Services (IIS) 6.0 và sau đó, khoá đăng ký MaxFieldLength và MaxRequestBytes nằm ởHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters.  Cấu hình các trình bày ở bảng sau đây:

Tên

Loại giá trị

Dữ liệu giá trị

MaxFieldLength

GIÁ

(4/3 * T byte) + 200

MaxRequestBytes

GIÁ

(4/3 * T byte) + 200

Ngoài ra, bạn có thể đặt khoá đăng ký các giá trị tối đa Hiển thị dưới đây. Quản trị viên nên xem xét tất cả các chi nhánh bảo mật tiềm năng nếu ông thực hiện bất kỳ thay đổi thiết đặt đăng ký:

 

Tên

Loại giá trị

Dữ liệu giá trị

MaxFieldLength

GIÁ

65534

MaxRequestBytes

GIÁ

16777216

Quan trọng: Thay đổi các khoá đăng ký có thể được coi là đặc biệt nguy hiểm. Các phím cho phép lớn HTTP gói được gửi đến IIS, lần lượt có thể gây ra Http.sys sử dụng nhiều bộ nhớ và có thể tăng lỗ hổng tấn công nguy hiểm.

Lưu ý: Nếu MaxFieldLength được cấu hình giá trị tối đa là 64KB, sau đó giá trị đăng ký MaxTokenSize nên được đặt thành 3/4 * 64 = 48 KB.  Để biết thêm thông tin về cài đặt MaxTokenSize, hãy xem bài viết cơ sở kiến thức Microsoft KB327825 liệt kê dưới đây.

Thông tin về các chủ đề được thảo luận trong bài viết này có thể được tìm thấy ở các vị trí sau:

Thiết đặt đăng ký http.sys cho IIS
http://support.Microsoft.com/kb/820129/en-US

Lỗi đăng nhập HTTP API
http://support.Microsoft.com/?ID=820729

Các giải pháp mới cho các vấn đề với xác thực Kerberos khi người dùng thuộc nhiều nhóm
http://support.Microsoft.com/kb/327825

Thông báo lỗi khi người dùng Outlook Web Access cố gắng truy cập một hộp thư trong Exchange Server 2003
http://support.Microsoft.com/kb/920862

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 2020943 - Xem lại Lần cuối: 10/26/2015 17:28:00 - Bản sửa đổi: 1.0

  • kbmt KB2020943 KbMtvi
Phản hồi