شما در حال مشاهده اسناد Apigee Edge هستید.
 به مستندات Apigee X بروید . اطلاعات
علامت
 برنامه سرویس گیرنده کد وضعیت HTTP 502 Bad Gateway را با protocol.http.Response405WithoutAllowHeader کد خطا دریافت می کند.http.Response405WithoutAllowHeader به عنوان پاسخی برای تماس های API.
پیغام خطا
برنامه مشتری کد پاسخ زیر را دریافت می کند:
HTTP/1.1 502 Bad Gateway
علاوه بر این، ممکن است پیغام خطای زیر را مشاهده کنید:
{
   "fault":{
      "faultstring":"Received 405 Response without Allow Header",
      "detail":{
         "errorcode":"protocol.http.Response405WithoutAllowHeader"
      }
   }
}علل احتمالی
 این خطا در صورتی رخ می دهد که سرور باطن با کد وضعیت 405 Method Not Allowed بدون هدر Allow پاسخ دهد.
 طبق مشخصات RFC 7231، بخش 6.5.5: روش 405 مجاز نیست ، انتظار می رود که سرور مبدا باید یک فیلد هدر Allow را در پاسخ 405 ایجاد و ارسال کند که حاوی لیستی از روش های پشتیبانی شده در حال حاضر منبع هدف است. اگر نه، Apigee با 502 Bad Gateway و protocol.http.Response405WithoutAllowHeader کد خطا پاسخ می دهد.http.Response405WithoutAllowHeader.
| علت | توضیحات | دستورالعمل های عیب یابی قابل اجرا برای | 
|---|---|---|
| پاسخ 405 بدون اجازه هدر از سرور باطن |  سرور باطنی که درخواست API را پردازش می کند با کد وضعیت 405 بدون هدر Allow پاسخ می دهد. | کاربران Edge Public و Private Cloud | 
مراحل تشخیص رایج
برای تشخیص این خطا از یکی از ابزارها/تکنیک های زیر استفاده کنید:
مانیتورینگ API
برای تشخیص خطا با استفاده از API Monitoring:
- به عنوان کاربر با نقش مناسب وارد رابط کاربری Edge شوید.
 به سازمانی که میخواهید در آن موضوع را بررسی کنید بروید.

- به صفحه Analyze > API Monitoring > Investigate بروید.
 - بازه زمانی خاصی را که در آن خطاها را مشاهده کرده اید انتخاب کنید.
 کد خطا را در برابر زمان ترسیم کنید.
سلولی را انتخاب کنید که دارای
protocol.http.Response405WithoutAllowHeaderکد خطا است.http.Response405WithoutAllowHeader مانند شکل زیر:
اطلاعات مربوط به
protocol.http.Response405WithoutAllowHeaderکد خطا.http.Response405WithoutAllowHeader مطابق شکل زیر نمایش داده می شود:
روی View logs کلیک کنید و یکی از درخواست های ناموفق را برای مشاهده اطلاعات بیشتر گسترش دهید.

-  از پنجره Logs به جزئیات زیر توجه کنید:
-  کد وضعیت: 
502 -  منبع خطا: 
target -  کد خطا: 
protocol.http.Response405WithoutAllowHeader. 
 -  کد وضعیت: 
 -  اگر منبع خطا 
targetاست و کد خطاprotocol.http.Response405WithoutAllowHeaderاست.http.Response405WithoutAllowHeader، پس این نشان میدهد که سرور باطن با کد وضعیت405 Method Not Allowedبدون هدرAllowپاسخ داده است. 
ابزار ردیابی
برای تشخیص خطا با استفاده از ابزار Trace:
-  جلسه ردیابی و یکی را فعال کنید
-  صبر کنید تا خطای 
502 Bad Gatewayرخ دهد یا -  اگر میتوانید مشکل را بازتولید کنید، با API تماس بگیرید تا مشکل تکرار شود - خطای 
502 Bad Gateway 
 -  صبر کنید تا خطای 
 اطمینان حاصل کنید که نمایش همه FlowInfos فعال است:

- یکی از درخواست های ناموفق را انتخاب کنید و ردیابی را بررسی کنید.
 - در مراحل مختلف ردیابی پیمایش کنید و محل وقوع شکست را پیدا کنید.
 خطا را معمولاً در یک جریان پس از ارسال درخواست به سرور هدف، مطابق شکل زیر خواهید دید:

به مقدار خطا از ردیابی توجه کنید.
ردیابی نمونه بالا خطا را به صورت
Received 405 Response without Allow Headerنشان می دهد. از آنجایی که این خطا توسط Apigee پس از ارسال درخواست به سرور باطن مطرح می شود، نشان می دهد که سرور باطن کد وضعیت پاسخ405را بدون هدرAllowارسال کرده است.- در Trace به فاز AX (Analytics Data Recorded) بروید و روی آن کلیک کنید.
 به قسمت Error / Response Headers در پانل جزئیات فاز بروید و مقادیر X-Apigee-fault-code و X-Apigee-fault-source را مطابق شکل زیر تعیین کنید:

-  مقادیر X-Apigee-fault-code و X-Apigee-fault-source را 
Allowtargetبه عنوانprotocol.http.Response405WithoutAllowHeaderمشاهده خواهید کرد405.سرصفحه های پاسخ ارزش X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source target 
NGINX
برای تشخیص خطا با استفاده از گزارش های دسترسی NGINX:
-  اگر کاربر Private Cloud هستید، می توانید از گزارش های دسترسی NGINX برای تعیین اطلاعات کلیدی مربوط به خطاهای HTTP 
502استفاده کنید. گزارش های دسترسی NGINX را بررسی کنید:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
جایی که: ORG ، ORG و، PORT# با مقادیر واقعی جایگزین میشوند.
-  جستجو کنید تا ببینید آیا خطاهای 
502باprotocol.http.Response405WithoutAllowHeaderکد خطا وجود دارد.http.Response405WithoutAllowHeader در طول مدت زمان مشخص (اگر مشکل در گذشته اتفاق افتاده باشد) یا اینکه آیا درخواست هایی هنوز با502ناموفق هستند. اگر هر گونه خطای
502با کد X-Apigee-fault-code مطابق با مقدارprotocol.http.Response405WithoutAllowHeaderپیدا کردید، سپس مقدار X-Apigee-fault-source را تعیین کنید.نمونه خطای 502 از گزارش دسترسی NGINX:

ورودی نمونه بالا از گزارش دسترسی NGINX دارای مقادیر زیر برای X-Apigee-fault-code و X-Apigee-fault-source است:
سرصفحه های پاسخ ارزش X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source target
علت: پاسخ 405 بدون اجازه دادن به هدر از سرور باطن
تشخیص
-  کد خطا و منبع خطا را برای 
502 Bad Gatewayبا استفاده از API Monitoring، Trace Tool یا گزارش های دسترسی NGINX همانطور که در مراحل تشخیص رایج توضیح داده شده است، تعیین کنید. -  اگر کد خطا 
protocol.http.Response405WithoutAllowHeaderاست.http.Response405WithoutAllowHeader و منبع خطا دارای مقدارtargetباشد، این نشان می دهد که سرور باطن با کد وضعیت405بدون هدرAllowپاسخ داده است. بنابراین، Apigee با502 Bad Gatewayباprotocol.http.Response405WithoutAllowHeaderکد خطا پاسخ می دهد.http.Response405WithoutAllowHeader. 
قطعنامه
برای حل مشکل از یکی از روش های زیر استفاده کنید:
سرور Backend
گزینه شماره 1: سرور Backend را برای ارسال کد وضعیت 405 با هدر Allow رفع کنید:
اطمینان حاصل کنید که سرور Backend همیشه به مشخصات RFC 7231، بخش 6.5.5: 405 Method Not Allowed پایبند است و با درج لیست روش هایی که به عنوان بخشی از هدر
Allowمجاز هستند، مطابق شکل زیر، کد وضعیت405را ارسال می کند:Allow: HTTP_METHODS
- به عنوان مثال، اگر سرور باطن شما متدهای 
GET،POSTوHEADرا مجاز میکند، باید مطمئن شوید که هدرAllowآنها را به صورت زیر در بر دارد:Allow: GET, POST, HEAD
 
رسیدگی به خطا
گزینه شماره 2: از Fault Handling برای ارسال کد وضعیت 405 با هدر Allow از پروکسی API خود استفاده کنید:
 اگر سرور پشتیبان کد وضعیت 405 را بدون هدر Allow برگرداند، می توانید از مدیریت خطا برای پاسخ دادن با کد وضعیت 405 و هدر Allow از پروکسی API خود به صورت زیر استفاده کنید:
یک خط مشی مانند خط مشی AssignMessage یا سیاست RaiseFault ایجاد کنید و کد وضعیت را با عنوان
Allowو یک پیام سفارشی روی405تنظیم کنید.نمونه خط مشی AssignMessage برای ارسال 405 با هدر Allow:
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-405WithAllowHeader"> <DisplayName>AM-405WithAllowHeader</DisplayName> <Set> <Payload contentType="application/json">{"Specified method is not allowed. Please use one of the methods mentioned in the Allow header."}</Payload> <StatusCode>405</StatusCode> <ReasonPhrase>Method Not Allowed</ReasonPhrase> </Set> <Add> <Headers> <Header name="Allow">GET, POST, HEAD</Header> </Headers> </Add> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
یک
FaultRuleدرTargetEndpointایجاد کنید، که با دریافت خطای502باprotocol.http.Response405WithoutAllowHeaderکد خطا، خط مشی را فراخوانی می کند.http.Response405WithoutAllowHeader.نمونه پیکربندی TargetEndpoint که FaultRule را نشان می دهد:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>- این تغییرات را در یک ویرایش جدید از پروکسی API خود ذخیره کنید و ویرایش را اجرا کنید.
 -  تماسهای API را برقرار کنید و تأیید کنید که کد وضعیت 
405را با هدرAllowدریافت میکنید. 
پیکربندی ویژگی
گزینه شماره 3: ویژگی را در Message Processor پیکربندی کنید تا Apigee Edge از بازگشت خطای 502 جلوگیری کند.
-  اگر کاربر Private Cloud هستید، میتوانید ویژگی 
HTTP.ignore.allow_header.for.405را بهtrueبهروزرسانی کنید تا از ایجاد خطای502توسط Apigee Edge جلوگیری کنید، حتی اگر سرور backend با کد وضعیت405بدون هدرAllowبا استفاده از راهنمای نحوه انجام: پیکربندی هدر ignore allow برای ویژگی 405 در پردازشگرهای پیام . - اگر کاربر Public Cloud هستید، لطفاً با پشتیبانی Apigee Edge تماس بگیرید
 
مشخصات
 Apigee انتظار پاسخ 405 Method Not Allowed از سرور backend به همراه هدر Allow مطابق مشخصات زیر دارد:
| مشخصات | |
|---|---|
| RFC 7231، بخش 6.5.5: روش 405 مجاز نیست | |
| RFC 7231، بخش 7.4.1: اجازه دهید | 
نکات کلیدی قابل توجه
 راه حل پیشنهادی این است که سرور باطن را تعمیر کنید تا کد وضعیت 405 را با هدر Allow ارسال کند و به مشخصات RFC 7231، بخش 6.5.5: 405 Method Not Allowed پایبند باشد.
اگر همچنان به کمک پشتیبانی Apigee نیاز دارید، به Must collect information diagnostic بروید.
باید اطلاعات تشخیصی را جمع آوری کرد
اگر حتی پس از پیروی از دستورالعملهای بالا، مشکل همچنان ادامه داشت، اطلاعات تشخیصی زیر را جمعآوری کنید و سپس با پشتیبانی Apigee Edge تماس بگیرید.
اگر کاربر Public Cloud هستید، اطلاعات زیر را ارائه دهید:
- نام سازمان
 - نام محیط زیست
 - نام پروکسی API
 -  دستور کامل 
curlبرای بازتولید502 Bad Gatewayباprotocol.http.Response405WithoutAllowHeaderکد خطا استفاده می شود.http.Response405WithoutAllowHeader - فایل ردیابی برای درخواست های API
 
اگر کاربر Private Cloud هستید، اطلاعات زیر را ارائه دهید:
- پیام خطای کامل برای درخواست های ناموفق مشاهده شد
 - نام محیط زیست
 - بسته پروکسی API
 - فایل ردیابی برای درخواست های API
 گزارش های دسترسی NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
جایی که: ORG ، ORG و، PORT# با مقادیر واقعی جایگزین میشوند.
-  گزارش های سیستم پردازشگر پیام 
/opt/apigee/var/log/edge-message-processor/logs/system.log