شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید . اطلاعات
در ارتباط کلاینت-سرور، اگر روش درخواست HTTP ارائه شده توسط کلاینت برای سرور شناخته شده باشد اما توسط منبع هدف پشتیبانی نشود، سرور با کد وضعیت HTTP 405 Method Not Allowed پاسخ میدهد. به طور مشابه در Apigee Edge، سرور backend میتواند با کد وضعیت HTTP 405 Method Not Allowed.
Apigee Edge انتظار دارد که سرور backend، پاسخهای خطای 405 Method Not Allowed را به همراه فهرستی از متدهای مجاز در سرآیند Allow ، مطابق با مشخصات RFC 7231، بخش ۶.۵.۵: ۴۰۵ Method Not Allowed، ارسال کند.
هدر Allow باید با فرمت زیر ارسال شود:
Allow: HTTP_METHODS
برای مثال، اگر سرور backend شما متدهای GET ، POST و HEAD را مجاز میداند، باید مطمئن شوید که سرآیند Allow شامل آنها به شرح زیر باشد:
Allow: GET, POST, HEAD
اگر سرور backend هدر Allow را با کد وضعیت HTTP 405 Method Not Allowed, Apigee کد وضعیت HTTP 502 Bad Gateway را با کد خطای protocol.http.Response405WithoutAllowHeader به برنامه کلاینت برمیگرداند. راه حل پیشنهادی برای رفع این خطا، اصلاح سرور backend برای رعایت مشخصات RFC 7231، بخش 6.5.5: 405 Method Not Allowed یا استفاده از مدیریت خطا برای پاسخ دادن با کد وضعیت HTTP 405 Method Not Allowed شامل هدر Allow است، همانطور که در کتابچه راهنمای عیبیابی 502 Bad Gateway - Response 405 without Allow header توضیح داده شده است.
با این حال، در برخی موارد استثنایی، ممکن است نتوانید بلافاصله مشکل بکاند خود را برطرف کنید یا پروکسی API خود را تغییر دهید تا به این مشکل رسیدگی شود.
در چنین مواردی، میتوانید هدر ignore allow را برای ویژگی 405 HTTP.ignore.allow_header.for.405 در سطح پردازشگر پیام به طور موقت تنظیم کنید. تنظیم این ویژگی روی true مانع از آن میشود که Apigee پاسخ 502 Bad Gateway را به برنامههای کلاینت برگرداند، حتی اگر سرور backend کد وضعیت HTTP 405 Method Not Allowed بدون هدر Allow ارسال کند.
زمانی که توانستید سرور backend خود را طوری تنظیم کنید که کد وضعیت HTTP 405 Method Not Allowed را با هدر Allow ارسال کند، میتوانید ویژگی HTTP.ignore.allow_header.for.405 به مقدار پیشفرض false برگردانید.
قبل از اینکه شروع کنی
قبل از استفاده از مراحل این سند، مطمئن شوید که مباحث زیر را درک کردهاید:
- دفترچه راهنما - 502 Bad Gateway - پاسخ 405 بدون سربرگ Allow را بخوانید.
- اگر با پیکربندی ویژگیهای Edge در Private Cloud آشنا نیستید، نحوه پیکربندی Edge را مطالعه کنید.
پیکربندی هدر ignore allow برای ویژگی ۴۰۵ به مقدار true در پردازندههای پیام
در Apigee Edge، ویژگی HTTP.ignore.allow_header.for.405 به طور پیشفرض روی false تنظیم شده است. این امر Apigee Edge را قادر میسازد تا در صورت ارسال کد وضعیت HTTP 405 Method Not Allowed بدون هدر Allow توسط سرور backend، خطای 502 Bad Gateway را با کد خطای protocol.http.Response405WithoutAllowHeader به برنامههای کلاینت برگرداند. اگر میخواهید از ارسال خطای 502 Bad Gateway توسط Apigee Edge به برنامههای کلاینت جلوگیری کنید، باید مقدار ویژگی HTTP.ignore.allow_header.for.405 در پردازندههای پیام روی true تنظیم کنید.
این بخش نحوه پیکربندی ویژگی HTTP.ignore.allow_header.for.405 را روی پردازندههای پیام (Message Processors) با true توضیح میدهد، که با استفاده از توکن مطابق با سینتکس شرح داده شده در نحوه پیکربندی Edge انجام میشود.
در دستگاه پردازشگر پیام، فایل زیر را در یک ویرایشگر باز کنید. اگر از قبل وجود ندارد، آن را ایجاد کنید.
/opt/apigee/customer/application/message-processor.properties
برای مثال، برای باز کردن فایل با استفاده از vi ، دستور زیر را وارد کنید:
vi /opt/apigee/customer/application/message-processor.properties
- یک خط با فرمت زیر به فایل properties اضافه کنید:
conf_http_HTTP.ignore.allow_header.for.405=true
- تغییرات خود را ذخیره کنید.
- مطمئن شوید که فایل properties متعلق به کاربر
apigeeاست، همانطور که در زیر نشان داده شده است:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- پردازشگر پیام را مطابق شکل زیر مجدداً راهاندازی کنید:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- اگر بیش از یک پردازشگر پیام دارید، مراحل بالا را روی همه پردازشگرهای پیام تکرار کنید.
تأیید اینکه هدر ignore allow برای ویژگی ۴۰۵ در Message Processors روی true تنظیم شده است
این بخش توضیح میدهد که چگونه میتوان تأیید کرد که ویژگی HTTP.ignore.allow_header.for.405 با موفقیت در پردازندههای پیام به true بهروزرسانی شده است.
حتی اگر از توکن conf_http_HTTP.ignore.allow_header.for.405 برای بهروزرسانی مقدار ویژگی در پردازنده پیام استفاده کنید، باید تأیید کنید که آیا ویژگی واقعی HTTP.ignore.allow_header.for.405 روی true تنظیم شده است یا خیر.
- در دستگاه پردازشگر پیام، ویژگی
HTTP.ignore.allow_header.for.405را در دایرکتوری/opt/apigee/edge-message-processor/confجستجو کنید و بررسی کنید که آیا مطابق شکل زیر، رویtrueتنظیم شده است یا خیر:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- اگر ویژگی با موفقیت در پردازنده پیام بهروزرسانی شود، دستور بالا باید مقدار ویژگی
HTTP.ignore.allow_header.for.405را در فایلhttp.propertiesمطابق شکل زیر، برابرtrueنشان دهد:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- اگر هنوز مقدار ویژگی
HTTP.ignore.allow_header.for.405به صورتfalseمیبینید، تأیید کنید که تمام مراحل ذکر شده در پیکربندی ignore allow header برای ویژگی 405 به true در Message Processors را به درستی دنبال کردهاید. اگر هر مرحلهای را از دست دادهاید، تمام مراحل را دوباره به درستی تکرار کنید. - اگر هنوز قادر به تغییر ویژگی
HTTP.ignore.allow_header.for.405نیستید، با پشتیبانی Apigee Edge تماس بگیرید.
پیکربندی سربرگ ignore allow برای ویژگی ۴۰۵ به false در پردازندههای پیام
این بخش نحوه پیکربندی ویژگی HTTP.ignore.allow_header.for.405 به مقدار پیشفرض false در پردازنده پیام، با استفاده از توکن مطابق با نحو شرح داده شده در نحوه پیکربندی Edge ، توضیح میدهد.
- بررسی کنید که آیا ویژگی
HTTP.ignore.allow_header.for.405بهtrueتغییر یافته است یا خیر. میتوانید این کار را با جستجوی این ویژگی در دایرکتوری/opt/apigee/edge-message-processor/confو بررسی مقدار آن با استفاده از دستور زیر انجام دهید:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- اگر این ویژگی در پردازنده پیام روی
trueتنظیم شده باشد، دستور بالا باید مقدار ویژگیHTTP.ignore.allow_header.for.405را در فایلhttp.propertiesمطابق شکل زیر،trueنشان دهد:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=true
- اگر دستور بالا نشان دهد که ویژگی
HTTP.ignore.allow_header.for.405رویfalse(مقدار پیشفرض) تنظیم شده است، دیگر لازم نیست کار دیگری انجام دهید. یعنی از مراحل زیر صرف نظر کنید. - اگر ویژگی
HTTP.ignore.allow_header.for.405رویtrueتنظیم شده باشد، مراحل زیر را برای بازگشت به مقدار پیشفرضfalseانجام دهید. در دستگاه پردازشگر پیام، فایل زیر را در یک ویرایشگر باز کنید:
/opt/apigee/customer/application/message-processor.properties
برای مثال، برای باز کردن فایل با استفاده از vi ، دستور زیر را وارد کنید:
vi /opt/apigee/customer/application/message-processor.properties
- خط زیر را از فایل properties حذف کنید:
conf_http_HTTP.ignore.allow_header.for.405=true
- تغییرات خود را ذخیره کنید.
- مطمئن شوید که فایل properties متعلق به کاربر
apigeeاست، همانطور که در زیر نشان داده شده است:chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- پردازشگر پیام را مطابق شکل زیر مجدداً راهاندازی کنید:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
- اگر بیش از یک پردازشگر پیام دارید، مراحل بالا را روی همه پردازشگرهای پیام تکرار کنید.
تأیید اینکه هدر ignore allow برای ویژگی ۴۰۵ در پردازندههای پیام روی false تنظیم شده است
این بخش توضیح میدهد که چگونه میتوان تأیید کرد که ویژگی HTTP.ignore.allow_header.for.405 با موفقیت در پردازندههای پیام به false بهروزرسانی شده است.
حتی اگر از توکن conf_http_HTTP.ignore.allow_header.for.405 برای بهروزرسانی مقدار در پردازنده پیام استفاده میکنید، باید تأیید کنید که آیا ویژگی واقعی HTTP.ignore.allow_header.for.405 روی false تنظیم شده است یا خیر.
- در دستگاه پردازشگر پیام، ویژگی
HTTP.ignore.allow_header.for.405را در دایرکتوری/opt/apigee/edge-message- processor/confجستجو کنید و بررسی کنید که آیا مطابق شکل زیر، رویfalseتنظیم شده است یا خیر:grep -ri "HTTP.ignore.allow_header.for.405" /opt/apigee/edge-message-processor/conf
- اگر ویژگی با موفقیت در پردازنده پیام بهروزرسانی شود، دستور بالا باید مقدار ویژگی
HTTP.ignore.allow_header.for.405را در فایلhttp.propertiesبه صورتfalseنشان دهد، همانطور که در زیر نشان داده شده است:/opt/apigee/edge-message-processor/conf/http.properties:HTTP.ignore.allow_header.for.405=false
- اگر هنوز مقدار ویژگی
HTTP.ignore.allow_header.for.405trueمیبینید، تأیید کنید که تمام مراحل ذکر شده در پیکربندی ignore allow header برای ویژگی 405 به false در Message Processors را به درستی دنبال کردهاید. اگر هر مرحلهای را از دست دادهاید، تمام مراحل را دوباره به درستی تکرار کنید. - اگر هنوز قادر به تغییر ویژگی
HTTP.ignore.allow_header.for.405نیستید، با پشتیبانی Apigee Edge تماس بگیرید.