شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
علامت
برنامهی کلاینت، کد وضعیت HTTP با مقدار 431 Request Header Fields Too Large به همراه کد خطای protocol.http.TooBigHeaders را به عنوان پاسخی برای فراخوانیهای API دریافت میکند.
پیام خطا
برنامهی کلاینت کد پاسخ زیر را دریافت میکند:
HTTP/1.1 431 Request Header Fields Too Large
علاوه بر این، ممکن است پیام خطای زیر را مشاهده کنید:
{
"fault":{
"faultstring":"request headers size exceeding 25,600",
"detail":{
"errorcode":"protocol.http.TooBigHeaders"
}
}
}علل احتمالی
این خطا زمانی رخ میدهد که اندازه کل هدرهای درخواست ارسالی توسط برنامه کلاینت به Apigee Edge به عنوان بخشی از درخواست HTTP، بزرگتر از حد مجاز در Apigee Edge طبق RFC 6585، بخش 5: 431 Request Header Fields Too Large باشد.
در اینجا علل احتمالی این خطا آورده شده است:
| علت | توضیحات | دستورالعملهای عیبیابی قابل اجرا برای |
|---|---|---|
| اندازه هدر درخواست از حد مجاز بیشتر است | اندازه کل تمام هدرهای ارسال شده توسط برنامه کلاینت به عنوان بخشی از درخواست HTTP به Apigee Edge از حد مجاز در Apigee Edge بیشتر است. | کاربران فضای ابری عمومی و خصوصی Edge |
مراحل تشخیص مشترک
برای تشخیص این خطا از یکی از ابزارها/تکنیکهای زیر استفاده کنید:
نظارت بر API
برای تشخیص خطا با استفاده از مانیتورینگ API:
- به عنوان کاربری با نقش کاربری مناسب، وارد Apigee Edge UI شوید .
به سازمانی که میخواهید مشکل را در آن بررسی کنید، مراجعه کنید.

- به صفحه Analyze > API Monitoring > Investigate بروید.
- بازه زمانی خاصی را که در آن خطاها را مشاهده کردهاید، انتخاب کنید.
- رسم کد خطا در مقابل زمان .
- سلولی را انتخاب کنید که کد خطای
protocol.http.TooBigHeadersو کد وضعیت431را مطابق شکل زیر داشته باشد:
اطلاعات مربوط به کد خطا
protocol.http.TooBigHeadersرا مطابق شکل زیر مشاهده خواهید کرد:
روی «مشاهده گزارشها» کلیک کنید و ردیف مربوط به درخواست ناموفق را باز کنید:

از پنجره Logs ، جزئیات زیر را یادداشت کنید:
- کد وضعیت:
431 - منبع گسل:
apigee - کد خطا:
protocol.http.TooBigHeaders. - طول درخواست (بایت):
32150 (> 25 KB)
- کد وضعیت:
- اگر منبع خطا مقدار
apigeeیاMPداشته باشد، کد خطا مقدارprotocol.http.TooBigHeadersرا دارد و طول درخواست بیش از ۲۵ کیلوبایت است، این نشان میدهد که اندازه کل تمام هدرهای درخواست ارسال شده توسط برنامه کلاینت به عنوان بخشی از درخواست HTTP بیشتر از حد مجاز در Apigee است .
ابزار ردیابی
انجینکس
برای تشخیص خطا با استفاده از گزارشهای دسترسی NGINX:
- اگر شما یک کاربر Private Cloud هستید، میتوانید از گزارشهای دسترسی NGINX برای تعیین اطلاعات کلیدی در مورد خطاهای HTTP
431استفاده کنید. گزارشهای دسترسی NGINX را بررسی کنید:
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_logکه در آن: ORG ، ENV و PORT# با مقادیر واقعی جایگزین شدهاند.
- جستجو کنید تا ببینید آیا در یک بازه زمانی خاص خطای
431وجود دارد یا خیر (اگر مشکل در گذشته رخ داده است) یا اینکه آیا درخواستهایی وجود دارند که هنوز با خطای431با شکست مواجه میشوند. اگر هرگونه خطای
431با X-Apigee-fault-code مطابق با مقدارprotocol.http.TooBigHeadersپیدا کردید، مقدار X-Apigee-fault-source را تعیین کنید.
ورودی نمونه بالا از لاگ دسترسی NGINX دارای مقادیر زیر برای X-Apigee-fault-code و X-Apigee-fault-source است:
هدرهای پاسخ ارزش کد خطای X-Apigee protocol.http.TooBigHeadersمنبع گسل X-Apigee MPبه طول درخواست توجه کنید:
40159(۴۰ کیلوبایت از ۲۵ کیلوبایت، حد مجاز برای هدرهای درخواست در Apigee Edge، بیشتر است)در ورودی لاگ نمونه بالا، مقدار X-Apigee-fault-source برابر با
apigeeیاMP، مقدار X-Apigee-fault-code برابر باprotocol.http.TooBigHeadersو طول درخواست ۴۰ کیلوبایت است که از حد مجاز در Apigee - ۲۵ کیلوبایت - بیشتر است. این به وضوح نشان میدهد که اندازه کل تمام هدرهای درخواست ارسال شده توسط برنامه کلاینت به عنوان بخشی از درخواست HTTP از حد مجاز ۲۵ کیلوبایت در Apigee Edge فراتر رفته است.
علت: اندازه هدر درخواست بزرگتر از حد مجاز است
تشخیص
- کد خطا ، منبع خطا و اندازه طول درخواست را برای خطای مشاهده شده با استفاده از گزارشهای API Monitoring یا NGINX Access همانطور که در مراحل تشخیص مشترک توضیح داده شده است، تعیین کنید.
- اگر منبع خطا مقدار
apigeeیاMP، کد خطا مقدارprotocol.http.TooBigHeadersداشته باشد و طول درخواست بیش از ۲۵ کیلوبایت باشد، این نشان میدهد که اندازه درخواست ارسال شده توسط برنامه کلاینت به Apigee بیشتر از حد مجاز در Apigee Edge است. - شما میتوانید با استفاده از یکی از روشهای زیر تأیید کنید که اندازه هدرهای درخواست از حد مجاز ۲۵ کیلوبایت فراتر رفته است:
پیام خطا
برای اعتبارسنجی با استفاده از پیام خطا:
اگر به پیام خطای کامل دریافتی از Apigee Edge دسترسی دارید، به
faultstringمراجعه کنید.faultstringنشان میدهد که اندازه کل هدرهای درخواست از حد مجاز ۲۵ کیلوبایت فراتر رفته است.نمونه پیام خطا:
"faultstring":"request headers size exceeding 25,600"
درخواست واقعی
برای اعتبارسنجی با استفاده از درخواست واقعی:
اگر به درخواست واقعی ارسال شده توسط برنامه کلاینت دسترسی دارید، مراحل زیر را انجام دهید:
- اندازه هدرهای ارسالی در درخواست را بررسی کنید.
اگر متوجه شدید که اندازه کل هدرها بیشتر از حد مجاز در Apigee Edge است، پس مشکل از همین جا ناشی میشود.
نمونه درخواست:
curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
در مورد فوق، اندازه کل هدرهای
header0،header1،header2وheader3بیش از 25 کیلوبایت است، یعنی حاوی بیش از 25 هزار کاراکتر ASCII (بایت) است.اگر از کلاینت دیگری استفاده میکنید، میتوانید لاگهای کلاینت را بررسی کنید و سعی کنید اندازه خط درخواستی که به Apigee Edge ارسال میشود را پیدا کنید.
گزارشهای پردازنده پیام
برای اعتبارسنجی با استفاده از گزارشهای پردازشگر پیام:
اگر شما یک کاربر Private Cloud هستید، میتوانید از گزارشهای Message Processor برای تأیید اینکه آیا اندازه Request Headers از حد مجاز در Apigee Edge فراتر رفته است یا خیر، استفاده کنید.
لاگهای پردازشگر پیام را بررسی کنید:
/opt/apigee/var/log/edge-message-processor/logs/system.log- جستجو کنید تا ببینید آیا در یک بازه زمانی خاص خطای
431وجود دارد (اگر مشکل در گذشته رخ داده است) یا آیا درخواستهایی وجود دارد که هنوز با خطای431مواجه میشوند. میتوانید از رشتههای جستجوی زیر استفاده کنید.grep -ri "exceeding"
grep -ri "RequestHeadersTooLarge"
- خطوطی مشابه خطوط زیر را در
system.logخواهید یافت:2021-07-27 08:30:28,419 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:GET, uri:/test/, message Id:null, exception:com.apigee.errors.http.user.RequestHeadersTooLarge{ code = protocol.http.TooBigHeaders, message = request headers size exceeding 25,600, associated contexts = []}, context:Context@9c5903 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130 useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms lastIO=0ms isOpen=true)
message = request headers size exceeding 25,600در پیام خطای بالا نشان میدهد که اندازه کل هدرهای درخواست بیش از ۲۵ کیلوبایت است. بنابراین، Apigee Edge خطایcom.apigee.errors.http.user.RequestHeadersTooLargeرا صادر میکند و کد وضعیت431را با کد خطاprotocol.http.TooBigHeadersبه برنامههای کلاینت برمیگرداند.
وضوح تصویر
اندازه را ثابت کنید
گزینه شماره ۱ [توصیه شده]: برنامه کلاینت را طوری تنظیم کنید که هدرهای درخواست با اندازه کل بزرگتر از حد مجاز ارسال نکند
- دلیل ارسال هدر درخواست با اندازه بزرگ توسط کلاینت خاص را که باعث میشود اندازه کل هدر از حد مجاز تعریف شده در Limits بیشتر شود، تجزیه و تحلیل کنید.
اگر مطلوب نیست، برنامه کلاینت خود را طوری تغییر دهید که هدرهای درخواست (Request Headers) با اندازهای کمتر از حد مجاز ارسال شوند.
در مثالی که در بالا مورد بحث قرار گرفت، میتوانید با ارسال پارامتر مقادیر هدر طولانی به عنوان بخشی از بدنه/بار درخواست، مشکل را برطرف کنید:
curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'- اگر مطلوب است و میخواهید هدری بیش از حد مجاز ارسال کنید، به گزینه بعدی بروید.
سی دبلیو سی
گزینه شماره ۲: استفاده از ویژگی CwC برای افزایش محدودیت خط درخواست
Apigee یک ویژگی CwC ارائه میدهد که به آن اجازه میدهد محدودیت اندازه خط درخواست را افزایش دهد. برای جزئیات بیشتر به تنظیم محدودیت خط درخواست در پردازنده پیام مراجعه کنید.
محدودیتها
Apigee انتظار دارد که برنامه کلاینت و سرور backend، هدرهای درخواست/پاسخی که اندازه آنها بزرگتر از حد مجاز است، همانطور که برای محدودیت اندازه هدر درخواست/پاسخ در Apigee Edge Limits مستند شده است، ارسال نکنند.
- اگر شما یک کاربر ابر عمومی هستید، حداکثر اندازه هدرهای درخواست و پاسخ مطابق با اندازه هدر درخواست/پاسخ در Apigee Edge Limits مستند شده است.
- اگر شما یک کاربر ابر خصوصی هستید، ممکن است حداکثر محدودیت پیشفرض برای اندازه هدرهای درخواست و پاسخ را تغییر داده باشید (هرچند که این یک روش توصیه شده نیست). میتوانید حداکثر محدودیت اندازه هدر درخواست را با دنبال کردن دستورالعملهای موجود در بخش «نحوه بررسی محدودیت فعلی» تعیین کنید.
چگونه حد فعلی را بررسی کنیم؟
این بخش توضیح میدهد که چگونه میتوان تأیید کرد که ویژگی HTTPRequest.headers.limit با مقدار جدیدی در پردازندههای پیام بهروزرسانی شده است.
- در دستگاه پردازشگر پیام، در دایرکتوری
/opt/apigee/edge-message-processor/confبه دنبال ویژگیHTTPRequest.headers.limitبگردید و بررسی کنید که چه مقداری مطابق شکل زیر تنظیم شده است:grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
- نتیجه نمونه از دستور بالا به شرح زیر است:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
در خروجی مثال بالا، توجه داشته باشید که ویژگی
HTTPRequest.headers.limitبا مقدار25kدرhttp.propertiesتنظیم شده است.این نشان میدهد که محدودیت اندازه هدر درخواست پیکربندی شده در Apigee برای ابر خصوصی، ۲۵ کیلوبایت است.
مشخصات
Apigee Edge انتظار دارد که برنامهی کلاینت، هدرهایی با اندازهی بزرگ را به عنوان بخشی از درخواست ارسال نکند. در صورتی که درخواست شامل هدرهایی با اندازهی کلی بیش از حد مشخص شده باشد، Apigee خطای 431 Request Header Fields Too Large مطابق با مشخصات RFC زیر ارسال میکند:
| مشخصات |
|---|
| RFC 6585، بخش 5: 431 فیلدهای سربرگ درخواست خیلی بزرگ هستند |
اگر هنوز به هرگونه کمکی از پشتیبانی Apigee نیاز دارید، به بخش «باید اطلاعات تشخیصی را جمعآوری کنید» بروید.
باید اطلاعات تشخیصی جمعآوری کند
اطلاعات تشخیصی زیر را جمعآوری کنید و سپس با پشتیبانی Apigee Edge تماس بگیرید:
اگر کاربر فضای ابری عمومی هستید، اطلاعات زیر را ارائه دهید:
- نام سازمان
- نام محیط
- نام پروکسی API
- دستور
curlکامل که برای بازتولید خطای431استفاده میشود - فایل ردیابی برای درخواستهای API
اگر کاربر Private Cloud هستید، اطلاعات زیر را ارائه دهید:
- پیام خطای کامل مشاهده شده برای درخواستهای ناموفق
- نام سازمان
- نام محیط
- بسته پروکسی API
- فایل ردیابی برای درخواستهای ناموفق API
- دستور
curlکامل که برای بازتولید خطای431استفاده میشود گزارشهای دسترسی NGINX
/opt/apigee/var/log/edge-router/nginx/ ORG ~ ENV . PORT# _access_logکه در آن: ORG ، ENV و PORT# با مقادیر واقعی جایگزین شدهاند.
- گزارشهای سیستم پردازشگر پیام
/opt/apigee/var/log/edge-message-processor/logs/system.log