أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المشكلة
يحصل تطبيق العميل على رمز حالة HTTP 502 Bad Gateway مع ظهور الخطأ.
الرمز protocol.http.ResponseWithBody كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.
رسالة الخطأ
يحصل تطبيق العميل على رمز الاستجابة التالي:
HTTP/1.1 502 Bad Gateway
بالإضافة إلى ذلك، قد تظهر لك إحدى رسائل الخطأ التالية:
{
"fault":{
"faultstring":"Received 204 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}{
"fault":{
"faultstring":"Received 205 Response with message body",
"detail":{
"errorcode":"protocol.http.ResponseWithBody"
}
}
}الأسباب المحتملة
يحدث هذا الخطأ في حال كانت استجابة HTTP من خادم الخلفية إلى Apigee Edge إما
204 No Content أو 205 Reset Content ولكن يحتوي على الردّ
نص أساسي و/أو عنوان واحد أو أكثر من العناوين التالية:
Content-LengthContent-EncodingTransfer-Encoding
وفقًا للمواصفات
RFC 7231، الفقرة 6.3.5: 204 بدون محتوى
RFC 7231، الفقرة 6.3.6: 205 إعادة ضبط المحتوى، يُتوقَّع عدم توفُّر محتوى إضافي.
يجب أن يرسلها خادم المصدر كجزء من نص حمولة الاستجابة مع رمز الحالة 204 No
Content أو 205 Reset Content. عناوين الاستجابة
مثل Content-Length أو Content-Encoding أو
تشير السمة Transfer-Encoding إلى حجم حمولة الاستجابة أو نوعها أو تنسيقها.
لذلك، تعرض Apigee Edge رمز الحالة 502 Bad Gateway مع
رمز الخطأ protocol.http.ResponseWithBody للعميل ضمن ما يلي
الظروف:
| رمز الحالة من خادم الخلفية | ||
|---|---|---|
| يحتوي الرد من خادم الخلفية على | 204 ليس هناك محتوى | 205 إعادة ضبط المحتوى |
| نص الاستجابة | خطأ | خطأ |
عنوان واحد ( (قيمة غير صفرية) |
خطأ | خطأ |
(تم الضبط على ترميز متوافق في Apigee Edge) |
خطأ | لا خطأ |
Transfer-Encoding |
خطأ | خطأ |
في ما يلي الأسباب المحتملة لحدوث هذا الخطأ:
| السبب | الوصف | إرشادات استكشاف الأخطاء وإصلاحها التي تنطبق على |
|---|---|---|
| نص الاستجابة أو العناوين التي تتضمّن استجابة 204 من خادم الخلفية | يرسل خادم الخلفية 204 No Content أو 205 Reset Content
استجابة بها نص استجابة و/أو واحد أو أكثر من العناوين Content-Type،
Content-Encoding أو Transfer-Encoding. |
مستخدمو Edge Public و Private Cloud |
خطوات التشخيص الشائعة
استخدِم إحدى الأدوات/الأساليب التالية لتشخيص هذا الخطأ:
مراقبة واجهة برمجة التطبيقات
لتشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات:
- سجِّل الدخول إلى واجهة مستخدم Apigee Edge كمستخدم باستخدام الدور المناسب.
انتقِل إلى المؤسسة التي تريد التحقيق في المشكلة فيها.
- انتقل إلى تحليل > مراقبة واجهة برمجة التطبيقات > التحقيق في الصفحة.
- اختَر الفترة الزمنية المحدّدة التي لاحظت فيها الأخطاء.
- ارسم رمز الخطأ مقابل الوقت.
اختَر خلية تتضمّن رمز الخطأ
protocol.http.ResponseWithBodyباعتباره كما هو موضح أدناه:
ستظهر لك معلومات عن رمز الخطأ.
protocol.http.ResponseWithBodyكما هو موضّح أدناه:
انقر على عرض السجلات ووسِّع صف الطلب الذي تعذّر تنفيذه.
- من نافذة السجلات، يُرجى ملاحظة التفاصيل التالية:
- رمز الحالة:
502 - مصدر الخطأ:
target - رمز الخطأ:
protocol.http.ResponseWithBody.
- رمز الحالة:
- إذا كان المصدر الخطأ يحتوي على القيمة
targetوقيمة الخطأ الرمز: يحتوي الرمز على القيمةprotocol.http.ResponseWithBody، وعندئذٍ إلى حدوث الخطأ لأن خادم الخلفية أرسل رمز الحالة204 No Contentأو205 Reset Contentمع نص الاستجابة و/أو أحد العناوين المذكورة في قسم الأسباب المحتملة.
أداة التتبُّع
لتشخيص الخطأ باستخدام أداة التتبُّع:
- تفعيل جلسة التتبُّع
وإمّا:
- انتظِر إلى أن يحدث الخطأ
502 Bad Gateway. أو - إذا كان بإمكانك إعادة إنتاج المشكلة، عليك طلب بيانات من واجهة برمجة التطبيقات وإعادة إظهار خطأ
502 Bad Gateway.
- انتظِر إلى أن يحدث الخطأ
تأكَّد من تفعيل عرض كل FlowInfos:
- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص عملية التتبُّع.
- يمكنك التنقّل خلال مراحل عملية التتبُّع المختلفة وتحديد موضع التعذُّر حدث.
سيظهر الخطأ عادةً في الخطأ
flowinfoفقط بعد مرحلة تم إرسال الطلب إلى الخادم الهدف كما هو موضّح أدناه:السيناريو الأول
السيناريو 1: استجابة خادم الخلفية برمز الحالة
204 No Contentتحتوي على نص الاستجابة و/أو أحد العناوين المدرجة في الأسباب المحتملة:
دوِّن قيم ما يلي من عملية التتبُّع:
- الخطأ:
Received 204 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
السيناريو الثاني
السيناريو 2: استجابة خادم الخلفية برمز الحالة
204 No Contentتحتوي على نص الاستجابة و/أو أحد العناوين المدرَجة في الأسباب المحتملة.
دوِّن قيم ما يلي من عملية التتبُّع:
- الخطأ:
Received 205 Response with message body - error.class:
com.apigee.rest.framework.BadGateway
- الخطأ:
- انتقِل إلى مرحلة AX (بيانات "إحصاءات Google" المسجَّلة) في التتبُّع. وانقر عليه.
مرِّر لأسفل إلى قسم تفاصيل المرحلة وعناوين الخطأ تحديد قيمتَي X-Apigee-fault-code وX-Apigee-fault-code كما هو موضح أدناه:
- تجدر الإشارة إلى أن قيمتَي X-Apigee-fault-code وX-Apigee-fault-code
are protocol.http.ResponseWithBodyوtargetعلى التوالي. يشير ذلك إلى حدوث الخطأ لأنّ خادم الخلفية أرسل رمز الحالة204 No Contentأو205 Reset Contentمع نص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة.خطأ القيمة X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target
NGINX
لتشخيص الخطأ باستخدام سجلات وصول NGINX:
- إذا كنت مستخدمًا للسحابة الإلكترونية الخاص، يمكنك استخدام سجلات وصول NGINX لإجراء ما يلي:
لتحديد المعلومات الأساسية حول HTTP
502 Bad Gateway. تحقق من سجلات وصول NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logالمكان: يتم استبدال ORG وENV وPORT# بقيم فعلية.
- البحث لمعرفة ما إذا كان هناك أي أخطاء
502مع رمز الخطأprotocol.http.ResponseWithBodyخلال مدة محدّدة (إذا حدثت المشكلة في الماضي) أو إذا كانت هناك أي طلبات لا تزال تخفق مع502 إذا ظهرت أي أخطاء
502في X-Apigee-fault-code تتطابق مع قيمةprotocol.http.ResponseWithBody، ثم تحديد قيمة X-Apigee-fault-source.نموذج الخطأ 502 من سجلّ وصول NGINX:
يتضمن الإدخال النموذجي أعلاه من سجل وصول NGINX القيم التالية الخاصة بـ X- Apigee-error-code وX-Apigee-error-source:
عناوين الردود القيمة X-Apigee-fault-code protocol.http.ResponseWithBodyX-Apigee-fault-source target- تجدر الإشارة إلى أن قيمتَي X-Apigee-fault-code وX-Apigee-fault-code
protocol.http.ResponseWithBodyوtargetعلى التوالي. يشير ذلك إلى حدوث الخطأ لأنّ خادم الخلفية أرسل رمز الحالة204 No Contentأو205 Reset Contentمع نص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة.
السبب: نص الاستجابة أو العناوين التي تتضمّن استجابة 204 من خادم الخلفية
التشخيص
- حدِّد رمز الخطأ ومصدر الخطأ للخطأ الذي تم رصده باستخدام واجهة برمجة التطبيقات. سجلات الوصول للمراقبة أو أداة التتبع أو NGINX كما هو موضح في خطوات التشخيص الشائعة:
- إذا كان رمز الخطأ هو
protocol.http.ResponseWithBodyقيمة المصدر الخطأ هيtarget، ويشير ذلك إلى أنّ الواجهة الخلفية استجاب الخادم بالحالة204 No Contentأو205 Reset Contentالرمز الذي يحتوي على نص الاستجابة و/أو أحد العناوين المذكورة في الأسباب المحتملة: للتحقّق مما إذا كان خادم الخلفية قد أرسل بالفعل نص حمولة بيانات للاستجابة و/أو واحدًا أو أكثر من الرؤوس المذكورة في الأسباب المحتملة، يمكنك إجراء الخطوات التالية:
إذا كنت مستخدمًا عامًا في Cloud، وكان بإمكانك إرسال طلب واجهة برمجة التطبيقات نفسه إلى خادم الخلفية مباشرةً من أي من أنظمتك.
- إذا كنت من مستخدمي Cloud Private، يمكنك إرسال طلب البيانات من واجهة برمجة التطبيقات نفسه إلى خادم الخلفية مباشرةً من أحد معالِجات معالجة الرسائل المرتبطة المؤسسة والبيئة حيث تتم ملاحظة الفشل.
راجِع الرد الذي تم استلامه من خادم الخلفية وتأكَّد من أنّه يحتوي على نص حمولة الاستجابة و/أو عنوان واحد أو أكثر من العناوين المذكورة أعلاه إذا كانت الإجابة بنعم، فهذا سبب هذا الخطأ.
النموذج رقم 1
النموذج 1: استجابة خادم الخلفية 204 باستخدام عنوان ترميز المحتوى
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Encoding: gzip< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveفي هذه العينة، استجاب خادم الخلفية رمز الحالة
204 No ContentContent-Encoding: gzipالنموذج رقم 2
النموذج 2: استجابة خادم الخلفية 204 مع عنوان طول المحتوى
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 204 No Content
< Content-Length: 48< Date: Tue, 31 Jul 2021 21:41:13 GMT < Connection: keep-aliveفي هذه العينة، استجاب خادم الخلفية رمز الحالة
204 No ContentContent-Length: 48النموذج رقم 3
النموذج 3: استجابة خادم الخلفية 205 مع نص الاستجابة
curl -v "https://BACKEND_SERVER_HOST_NAME/PATH" -H "HEADER: VALUE" -X HTTP_REQUEST_METHOD
… < HTTP/1.1 205 Reset Content < Date: Sat, 31 Jul 2021 17:14:09 GMT < Content-Length: 12 < Content-Type: text/plain; charset=utf-8 < * Connection #0 to host X.X.X.X left intact
This is a sample Responseفي هذه العينة، استجاب خادم الخلفية رمز حالة واحد (
205 Reset Content) مع نص الاستجابةThis is a sample Response.- في كل الأمثلة المذكورة أعلاه، أرسل خادم الخلفية
204 No Contentأو رمز حالة205 Reset Contentمع نص الاستجابة و/أو أحد العناوين مذكورة في الأسباب المحتملة. - لذلك، أرسلت Apigee Edge رمز الحالة
502 Bad Gatewayمع رمز الخطأ.protocol.http.ResponseWithBody
الدقة
التأكد من أن خادم الخلفية يلتزم دائمًا بالمواصفات
RFC 7231، القسم 6.3.6: 205 إعادة ضبط المحتوى، عند إرسال 204 No Content
أو 205 Reset Content على Apigee Edge. أي خادم الخلفية
يجب ألا يرسل ما يلي كجزء من 204 No Content أو
رد 205 Reset Content:
- نص حمولة الاستجابة
- وأيٍّ من العناوين التالية:
Content-LengthContent-EncodingTransfer-Encoding
المواصفات
تستجيب Apigee Edge برمز الحالة 502 Bad Gateway ورمز الخطأ.
protocol.http.ResponseWithBody إذا أرسل خادم الخلفية
رد 204 No Content أو 205 Reset Content ولكن
لا تتقيد بمواصفات RFC التالية:
| المواصفات |
|---|
| RFC 7231، الفقرة 6.3.5: 204 بلا محتوى |
| RFC 7231، الفقرة 6.3.6: 205 إعادة ضبط المحتوى |
نقاط رئيسية يجب مراعاتها
الحل المقترَح هو إصلاح خادم الخلفية لإرسال 204 No Content.
و205 Reset Content رمز الحالة بدون نص الاستجابة وأي من
العناوين - Content-Length وContent-Encoding و
Transfer-Encoding والالتزام بالمواصفات
RFC 7231، الفقرة 6.3.5: 204 بلا محتوى و
RFC 7231، القسم 6.3.6: 205 إعادة ضبط المحتوى.
إذا كنت لا تزال بحاجة إلى مساعدة من Apigee، يُرجى الانتقال إلى يجب جمع معلومات التشخيص.
يجب جمع معلومات التشخيص
اجمع معلومات التشخيص التالية، ثم تواصَل مع فريق دعم Apigee Edge:
إذا كنت من مستخدمي Cloud Public، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- إكمال الأمر
curlالمُستخدَم لإعادة إنتاج الخطأ502 - ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
إذا كنت مستخدمًا للسحابة الإلكترونية الخاصة، قدِّم المعلومات التالية:
- ظهور رسالة خطأ كاملة للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
سجلّات وصول 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