"HTTP 400 - เสียคำขอ (คำร้องขอในหัวข้อความยาวเกินไป)" เกิดข้อผิดพลาดใน Internet Information Services (IIS)

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:2020943
อาการ

ผู้ใช้โดเมนพยายามเรียกดูไปยังเว็บไซต์ที่โฮสต์บน Internet Information Services (IIS) 6.0 หรือสูงกว่า โดยใช้ Internet Explorer 6.0 หรือรุ่นที่ใหม่กว่า  เว็บไซต์ถูกกำหนดค่าให้ใช้การรับรองความถูกต้องของ Kerberos  แทนที่จะได้รับเว็บเพจที่คาดไว้ ผู้ใช้จะแสดงข้อความข้อผิดพลาดที่คล้ายกับต่อไปนี้:

HTTP 400 - การร้องขอไม่ถูกต้อง (หน้าร้องขอนานเกินไป)

สาเหตุ

ปัญหานี้อาจเกิดขึ้นเมื่อผู้ใช้เป็นสมาชิกของกลุ่มผู้ใช้ของไดเรกทอรีที่ใช้งานอยู่มาก เมื่อผู้ใช้เป็นสมาชิกของไดเรกทอรีที่ใช้งานอยู่เป็นจำนวนมากกลุ่มโทเคนการรับรองความถูกต้อง Kerberos สำหรับการเพิ่มผู้ใช้ในขนาด การร้องขอ HTTP ที่ส่งผู้ใช้ไปยังเซิร์ฟเวอร์ IIS ประกอบด้วยโทเค็น Kerberos ในหัวข้อการรับรองความถูกต้อง WWW และขนาดหัวข้อที่เพิ่มขึ้นเมื่อจำนวนของกลุ่มเลื่อนขึ้น  ถ้าส่วนหัว HTTP หรือขนาดแพ็คเก็ตเพิ่มขึ้นในอดีตจำกัดถูกกำหนดค่าใน IIS, IIS อาจปฏิเสธการร้องขอ และส่งข้อผิดพลาดนี้เป็นการตอบสนอง

การแก้ไข

เมื่อต้องการหลีกเลี่ยงปัญหานี้ เลือกหนึ่งตัวเลือกต่อไปนี้:

A) ลดจำนวนของกลุ่ม Active Directory ที่ผู้ใช้เป็นสมาชิกของ

OR

B) ปรับเปลี่ยนการ MaxFieldLength และการตั้งค่ารีจิสทรี MaxRequestBytes บนเซิร์ฟเวอร์ IIS เพื่อให้ส่วนหัวของคำขอของผู้ใช้จะไม่ถือว่านานเกินไป  เมื่อต้องการกำหนดการตั้งค่าที่เหมาะสมสำหรับการ MaxFieldLength และรายการรีจิสทรี MaxRequestBytes ใช้การคำนวณต่อไปนี้:

    1. คำนวณขนาดของโทเค็น Kerberos ของผู้ใช้ที่ใช้สูตรอธิบายไว้ในบทความต่อไปนี้:

      ความละเอียดใหม่สำหรับปัญหาเกี่ยวกับ Kerberos รับรองความถูกต้องเมื่อผู้ใช้เป็นสมาชิกของกลุ่มจำนวน
      http://support.microsoft.com/kb/327825


    2. ตั้งค่าคอนฟิกคีย์รีจิสทรี MaxRequestBytes และ MaxFieldLength ที่บนเซิร์ฟเวอร์ IIS ด้วยค่าของ4/3 * Tที่Tเป็นของผู้ใช้โทเค็นขนาด ในหน่วยไบต์ HTTP จแมปใช้ base64 เข้ารหัสโทเค็น Kerberos และดังนั้น แทนทุก ๆ ไบต์ 3 ในโทเค็นมี 4 base64 เข้ารหัสไบต์  การเปลี่ยนแปลงที่เกิดขึ้นกับรีจิสทรีจะไม่มีผลจนกว่าคุณเริ่มต้นบริการ HTTP นอกจากนี้ คุณอาจต้องรีสตาร์ท IIS บริการใด ๆ ที่เกี่ยวข้องกัน

หมายเหตุ: ขึ้นอยู่กับสภาพแวดล้อมแอพลิเคชันของคุณ คุณสามารถให้คำนึงถึงการตั้งค่าคอนฟิกเว็บไซต์เพื่อใช้ NTLM แทน Kerberos เพื่อหลีกเลี่ยงปัญหานี้  สภาพแวดล้อมบางโปรแกรมประยุกต์ที่จำเป็นต้องใช้ Kerberos จะใช้เพื่อวัตถุประสงค์ในการมอบหมาย และ Kerberos เป็นความปลอดภัยมากกว่า NTLM ดังนั้นจึงขอแนะนำให้ คุณปิดใช้งาน Kerberos ก่อนที่จะพิจารณาถึงปัญหาด้านความปลอดภัยและการมอบหมายของการทำเช่นนั้น


ข้อมูลเพิ่มเติม

โดยค่าเริ่มต้น รายการรีจิสทรี MaxFieldLength ไม่มีอยู่ รายการรีจิสทรีนี้ระบุขีดจำกัดขนาดสูงสุดของแต่ละส่วนหน้าของคำขอ HTTP รายการรีจิสทรี MaxRequestBytes ระบุขีดจำกัดบนสำหรับขนาดโดยรวมของบรรทัดคำขอและส่วนหัว โดยทั่วไป รายการรีจิสทรีนี้ถูกกำหนดค่าพร้อมกับรายการรีจิสทรี MaxRequestBytes ถ้าค่า MaxRequestBytes เป็นต่ำกว่าค่า MaxFieldLength มีการปรับปรุงค่า MaxFieldLength  ในสภาพแวดล้อม Active Directory ขนาดใหญ่ ผู้ใช้อาจประสบความล้มเหลวของการเข้าสู่ระบบถ้าไม่มีตั้งค่าสำหรับรายการเหล่านี้ทั้งสองเป็นค่าสูงเพียงพอ

สำหรับ Internet Information Services (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 กิโลไบต์ จาก นั้นควรตั้งค่ารีจิสทรี MaxTokenSize 3/4 * 64 = 48 กิโลไบต์  สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่า MaxTokenSize โปรดดูบทความฐานความรู้ของ Microsoft KB327825 ที่แสดงด้านล่าง

ข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อกล่าวถึงในบทความนี้สามารถพบได้ที่ตำแหน่งที่ตั้งต่อไปนี้:

การตั้งค่ารีจิสทรี Http.sys สำหรับ IIS
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 09:18:00 - ฉบับแก้ไข: 1.0

  • kbmt KB2020943 KbMtth
คำติชม