أنت تعرض مستندات 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-Length
Content-Encoding
Transfer-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.ResponseWithBody
X-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.ResponseWithBody
X-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 Content
Content-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 Content
Content-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-Length
Content-Encoding
Transfer-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
- ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
إذا كنت من مستخدمي Cloud Private، يُرجى تقديم المعلومات التالية:
- ظهور رسالة خطأ كاملة للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
سجلّات وصول 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