أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المشكلة
يحصل تطبيق العميل على رمز حالة HTTP 502 Bad Gateway
مع ظهور الخطأ.
الرمز protocol.http.Response405WithoutAllowHeader
كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.
رسالة الخطأ
يحصل تطبيق العميل على رمز الاستجابة التالي:
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
.
السبب | الوصف | إرشادات استكشاف الأخطاء وإصلاحها التي تنطبق على |
---|---|---|
استجابة 405 بدون السماح بالعنوان من خادم الخلفية | ويستجيب خادم الخلفية الذي يعالج طلب البيانات من واجهة برمجة التطبيقات برمز الحالة 405 بدون العنوان Allow . |
مستخدمو Edge Public و Private Cloud |
خطوات التشخيص الشائعة
استخدِم إحدى الأدوات/الأساليب التالية لتشخيص هذا الخطأ:
مراقبة واجهة برمجة التطبيقات
لتشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات:
- سجِّل الدخول إلى واجهة مستخدم Edge كمستخدم باستخدام الدور المناسب.
انتقِل إلى المؤسسة التي تريد التحقيق في المشكلة فيها.
- انتقل إلى تحليل > مراقبة واجهة برمجة التطبيقات > التحقيق في الصفحة.
- اختَر الفترة الزمنية المحدّدة التي لاحظت فيها الأخطاء.
ارسم رمز الخطأ مقابل الوقت.
اختَر خلية تحتوي على رمز الخطأ.
protocol.http.Response405WithoutAllowHeader
كما هو موضّح أدناه:معلومات عن رمز الخطأ
protocol.http.Response405WithoutAllowHeader
كما هو موضح أدناه:انقر على عرض السجلات ووسِّع أحد الطلبات التي تعذّر تنفيذها لعرض المزيد من المعلومات.
- من نافذة السجلات، يُرجى ملاحظة التفاصيل التالية:
- رمز الحالة:
502
- مصدر الخطأ:
target
- رمز الخطأ:
protocol.http.Response405WithoutAllowHeader
.
- رمز الحالة:
- إذا كان مصدر الخطأ هو
target
وكان رمز الخطأ هوprotocol.http.Response405WithoutAllowHeader
، فهذا يشير إلى أن الواجهة الخلفية استجاب الخادم برمز الحالة405 Method Not Allowed
بدون عنوانAllow
أداة التتبُّع
لتشخيص الخطأ باستخدام أداة التتبُّع:
- تمكين
جلسة تتبع
- انتظِر إلى أن يحدث الخطأ
502 Bad Gateway
. - إذا كان بإمكانك إعادة إنتاج المشكلة، يُرجى طلب بيانات من واجهة برمجة التطبيقات لإعادة إنتاج المشكلة.
خطأ واحد (
502 Bad Gateway
)
- انتظِر إلى أن يحدث الخطأ
تأكَّد من تفعيل عرض كل FlowInfos:
- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص عملية التتبُّع.
- يمكنك التنقّل خلال مراحل عملية التتبُّع المختلفة وتحديد مكان حدوث الفشل.
سيظهر الخطأ عادةً في مسار بعد النقر على تم إرسال الطلب إلى الخادم الهدف. كما هو موضح أدناه:
سجِّل قيمة الخطأ من عملية التتبُّع.
يعرض نموذج التتبّع أعلاه الخطأ كـ
Received 405 Response without Allow Header
. لأنّ الخطأ يظهر في Apigee بعد إرسال الطلب إلى الخلفية فإنه يشير إلى أن خادم الخلفية أرسل رمز حالة الاستجابة405
بدون عنوانAllow
.- انتقِل إلى مرحلة AX (البيانات المسجَّلة في "إحصاءات Google") في عملية التتبُّع وانقر عليها.
مرِّر للأسفل حتى تصل إلى قسم عناوين الخطأ / عناوين الاستجابة في تفاصيل المرحلة. اللوحة وتحديد قيمتي X-Apigee-fault-code وX-Apigee-fault-code كما هو موضح أدناه:
- وستظهر لك قيم X-Apigee-fault-code وX-Apigee-fault-code على النحو التالي:
protocol.http.Response405WithoutAllowHeader
وtarget
على التوالي، إلى أن هذا الخطأ ناتج عن إرسال الخلفية رمز حالة الاستجابة405
بدون العنوانAllow
.عناوين الردود القيمة X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source target
NGINX
لتشخيص الخطأ باستخدام سجلات وصول NGINX:
- إذا كنت مستخدمًا للسحابة الإلكترونية الخاص، يمكنك استخدام سجلات وصول NGINX لتحديد
المعلومات الأساسية حول أخطاء HTTP
502
. تحقق من سجلات وصول NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ORG.PORT#_access_log
المكان: يتم استبدال ORG وORG وPORT# بقيم فعلية.
- البحث لمعرفة ما إذا كان هناك أي أخطاء
502
مع رمز الخطأprotocol.http.Response405WithoutAllowHeader
خلال مدة محدّدة (إذا كانت حدثت مشكلة في الماضي) أو إذا كانت هناك أي طلبات لا تزال تخفق مع502
إذا عثرت على أي أخطاء
502
مع X-Apigee-fault-code الذي يتطابق مع بقيمةprotocol.http.Response405WithoutAllowHeader
، ثم حدِّد قيمة X-Apigee-fault-source..نموذج الخطأ 502 من سجلّ وصول NGINX:
يتضمن إدخال النموذج أعلاه من سجل وصول NGINX القيم التالية الخاصة بـ X-Apigee- رمز الخطأ وX-Apigee-error-source:
عناوين الردود القيمة X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source target
السبب: استجابة 405 بدون العنوان "السماح" من خادم الخلفية
التشخيص
- تحديد رمز الخطأ ومصدر الخطأ في
502 Bad Gateway
باستخدام سجلات وصول لواجهة برمجة التطبيقات أو أداة التتبع أو NGINX كما هو موضح في خطوات التشخيص الشائعة: - إذا كان رمز الخطأ هو
protocol.http.Response405WithoutAllowHeader
مصدر الخطأ هو القيمةtarget
، ولذلك يشير ذلك إلى أن خادم الخلفية استجابت برمز الحالة405
بدون عنوانAllow
. ولذلك، Apigee تستجيب باستخدام502 Bad Gateway
مع عرض رمز الخطأprotocol.http.Response405WithoutAllowHeader
الدقة
يمكنك اتّباع إحدى الطرق التالية لحلّ المشكلة:
خادم الخلفية
الخيار 1: إصلاح خادم الخلفية لإرسال رمز الحالة 405 باستخدام العنوان "السماح":
التأكد من أن خادم الخلفية يلتزم دائمًا بالمواصفات RFC 7231، القسم 6.5.5: 405 الطريقة غير مسموح بها ويُرسل الحالة
405
عن طريق تضمين قائمة بالطرق المسموح بها كجزء من عنوانAllow
كما هو موضح أدناه:Allow: HTTP_METHODS
- على سبيل المثال، إذا كان خادم الخلفية يسمح بالنطاقات
GET
وPOST
HEAD
، فحينئذٍ يجب التأكد من أن الرأسAllow
يحتوي على على النحو التالي:Allow: GET, POST, HEAD
التعامل مع الأخطاء
الخيار #2: استخدام "معالجة الأخطاء" لإرسال رمز الحالة 405 باستخدام العنوان "السماح" من واجهة برمجة التطبيقات الخادم الوكيل:
إذا عرض خادم الخلفية رمز الحالة 405
بدون Allow
يمكنك استخدام معالجة الأخطاء للرد باستخدام رمز الحالة 405
Allow
من الخادم الوكيل لواجهة برمجة التطبيقات على النحو التالي:
يمكنك إنشاء سياسة مثل سياسة assignMessage أو سياسة riseFault واضبط رمز الحالة على
405
مع عنوانAllow
وعنوان URL مخصّص .نموذج سياسة 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
نموذج من إعدادات TargetEndpoint التي تعرض الخطأ FaultRule:
<TargetEndpoint name="default"> ... <FaultRules> <FaultRule name="405WithoutAllowHeader"> <Step> <Name>AM-405WithAllowHeader</Name> </Step> <Condition>(fault.name = "Response405WithoutAllowHeader")</Condition> </FaultRule> </FaultRules>
- احفظ هذه التغييرات في نسخة جديدة من الخادم الوكيل لواجهة برمجة التطبيقات وانشر النسخة السابقة.
- يمكنك إجراء طلبات البيانات من واجهة برمجة التطبيقات والتأكّد من تلقّي رمز الحالة
405
من خلال عنوانAllow
إعداد الموقع
الخيار رقم 3: إعداد الموقع في معالج الرسائل لمنع Apigee Edge من عرض الخطأ 502
- إذا كنت من مستخدمي Private Cloud، يمكنك تعديل الموقع.
من
HTTP.ignore.allow_header.for.405
إلىtrue
لمنع Apigee Edge من عرض خطأ502
حتى إذا استجاب خادم الخلفية باستخدام405
رمز الحالة بدون العنوانAllow
باستخدام الدليل الإرشادي: تهيئة رأس السماح بالتجاهل لخاصية 405 في معالِجات معالجة الرسائل. - إذا كنت من مستخدمي Public Cloud، يُرجى التواصل مع فريق دعم Apigee Edge.
المواصفات
تتوقع Apigee استجابة 405 Method Not Allowed
من خادم الخلفية على طول
بالرأس Allow
وفقًا للمواصفات التالية:
المواصفات | |
---|---|
RFC 7231، الفقرة 6.5.5: 405: الطريقة غير مسموح بها | |
RFC 7231، الفقرة 7.4.1: السماح |
نقاط رئيسية يجب مراعاتها
الحل المقترَح هو إصلاح خادم الخلفية لإرسال رمز الحالة 405
.
التي تتضمّن عنوان Allow
والالتزام بالمواصفات
RFC 7231، الفقرة 6.5.5: 405: الطريقة غير مسموح بها.
إذا كنت بحاجة إلى مزيد من المساعدة من Apigee، يُرجى الانتقال إلى . يجب جمع معلومات التشخيص.
يجب جمع معلومات التشخيص
في حال استمرار المشكلة حتى بعد اتّباع التعليمات أعلاه، يُرجى جمع ما يلي معلومات التشخيص، ثم التواصل مع فريق دعم Apigee Edge.
إذا كنت من مستخدمي Cloud Public، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- إكمال الأمر
curl
المُستخدَم لإعادة إنتاج الأمر502 Bad Gateway
باستخدام رمز الخطأprotocol.http.Response405WithoutAllowHeader
- ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
إذا كنت من مستخدمي Cloud Private، يُرجى تقديم المعلومات التالية:
- ظهور رسالة خطأ كاملة للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
سجلات وصول 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