يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات
Apigee X. المعلومات
المشكلة
يحصل تطبيق العميل على رمز حالة HTTP 415 Unsupported Media Type
مع رمز الخطأ protocol.http.UnsupportedEncoding
كاستجابة لطلبات البيانات من واجهة برمجة التطبيقات.
رسالة الخطأ
يتلقى تطبيق العميل رمز الاستجابة التالي:
HTTP/1.1 415 Unsupported Media Type
بالإضافة إلى ذلك، قد تلاحظ رسالة خطأ مشابهة للرسالة المعروضة أدناه:
{ "fault":{ "faultstring":"Unsupported Encoding \"UTF-8\"", "detail":{ "errorcode":"protocol.http.UnsupportedEncoding" } } }
الأسباب المحتملة
يحدث هذا الخطأ إذا كانت قيمة العنوان Content-Encoding
المحددة إما في طلب HTTP الذي أرسله العميل إلى Apigee أو في استجابة HTTP التي أرسلها خادم الخلفية إلى Apigee لا تحتوي على الترميز المتوافق من Apigee، وذلك وفقًا للمواصفات
RFC 7231، القسم 6.5.13: 415 نوع وسائط غير متوافق.
الأسباب المحتملة لهذا الخطأ هي كما يلي:
السبب | الوصف | تعليمات تحديد المشاكل وحلّها السارية على |
---|---|---|
تم استخدام ترميز غير متوافق في الطلب | يحتوي عنوان الطلب Content-Encoding على ترميز غير متوافق مع Apigee Edge. |
مستخدمو Edge العام والخاص على السحابة الإلكترونية |
تم استخدام ترميز غير متوافق في الاستجابة | يحتوي عنوان استجابة خادم الخلفية Content-Encoding على ترميز لا يتوافق مع Apigee Edge. |
مستخدمو Edge العام والخاص على السحابة الإلكترونية |
خطوات التشخيص الشائعة
لتشخيص الخطأ، يمكنك استخدام أي من الطرق التالية:
مراقبة واجهة برمجة التطبيقات
لتشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات:
- سجِّل الدخول إلى حسابك على Apigee Edge.
انتقِل إلى المؤسسة التي تريد التحقيق في المشكلة فيها:
- انتقل إلى صفحة تحليل > مراقبة واجهة برمجة التطبيقات > التحقيق.
- اختَر الإطار الزمني المحدّد الذي لاحظت فيه الأخطاء.
- تأكّد من ضبط فلتر الخادم الوكيل على الكل.
- ارسم رمز الخطأ مقابل الوقت.
اختَر خلية تحتوي على رمز الخطأ
protocol.http.UnsupportedEncoding
كما هو موضّح أدناه:يتم عرض معلومات عن رمز الخطأ
protocol.http.UnsupportedEncoding
كما هو موضح أدناه:انقر على عرض السجلات ووسِّع أحد الطلبات التي يتعذّر تنفيذها مع ظهور الخطأ
415
لعرض مزيد من المعلومات:- من نافذة السجلّات، دوِّن التفاصيل التالية:
- مصدر الخطأ: يوضّح هذا أنّ الخطأ تم عرضه من خلال
apigee
أوtarget
. - رمز الخطأ: يجب أن يتطابق هذا الرمز مع
protocol.http.UnsupportedEncoding
.
- مصدر الخطأ: يوضّح هذا أنّ الخطأ تم عرضه من خلال
- إذا كان مصدر الخطأ هو
apigee
، يعني ذلك أنّ الطلب تضمّن ترميزًا غير متوافق في عنوانContent-Encoding
. - إذا كان مصدر الخطأ هو
target
، يشير ذلك إلى أنّ استجابة خادم الخلفية تضمّنت ترميزًا غير متوافق في العنوانContent-Encoding
.
أداة التتبُّع
لتشخيص الخطأ باستخدام أداة التتبُّع:
- فعِّل
جلسة التتبُّع وإمّا:
- انتظر حتى يحدث الخطأ
415 Unsupported Media Type
، أو - إذا كان بإمكانك إعادة إظهار المشكلة، عليك إجراء طلب بيانات من واجهة برمجة التطبيقات لإعادة إظهار الخطأ
415 Unsupported Media Type
.
- انتظر حتى يحدث الخطأ
تأكد من تمكين عرض كل FlowInfo:
- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص بيانات التتبّع.
- تنقَّل عبر المراحل المختلفة من عملية التتبُّع وحدِّد مكان حدوث الفشل.
ستجد الخطأ عادةً في عملية تدفق بعد مرحلة تم إرسال الطلب إلى الخادم المستهدف كما هو موضّح أدناه:
دوِّن قيمة الخطأ في عملية التتبّع.
يعرض تقرير تتبُّع النموذج أعلاه الخطأ على أنّه
Unsupported Encoding "utf-8"
. بما أنّ الخطأ المرسَل من قِبل Apigee بعد إرسال الطلب إلى خادم الخلفية، يعني ذلك أنّ خادم الخلفية أرسل عنوان الاستجابةContent-Encoding
مع القيمة"utf-8"
، وهي ليست ترميزًا متوافقًا في Apigee.- انتقِل إلى مرحلة AX (بيانات "إحصاءات Google" المسجّلة) في التتبُّع وانقر عليها.
انتقِل للأسفل إلى قسم Error / Response Headers (عناوين الأخطاء/الاستجابة) في لوحة Stage Details (تفاصيل المرحلة) وحدِّد قيمتَي X-Apigee-error-code وX-Apigee- error-source كما هو موضّح أدناه:
ستظهر قيمتَي X-Apigee-fault-code وX-Apigee-fault-code بالرمز
protocol.http.UnsupportedEncoding
وtarget
، ما يشير إلى أنّ هذا الخطأ حدث بسبب تمرير قيمة الترميز غير المتوافقة لـ"utf-8"
من خلال خادم الخلفية في عنوان الاستجابةContent-Encoding
.عناوين الاستجابة القيمة X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-Apigee-fault-source target
- تحقَّق ممّا إذا كنت تستخدم
تسلسل الخادم الوكيل، أي ما إذا كانت نقطة النهاية المستهدَفة/الخادم الهدف تستدعي
خادمًا وكيلاً آخر في Apigee.
لتحديد ذلك، انتقِل مرة أخرى إلى مرحلة تم إرسال الطلب إلى الخادم الهدف. انقر على Show Curl (إظهار عنوان URL).
- ستفتح نافذة تجانس طلب تم الإرسال إلى الخادم الهدف والتي يمكنك من خلالها تحديد الاسم المستعار لمضيف الخادم الهدف.
- إذا كان الاسم المستعار لمضيف الخادم الهدف يشير إلى اسم مستعار لمضيف افتراضي، يكون ذلك في هذه الحالة تسلسل الخادم الوكيل. في هذه الحالة، يجب تكرار جميع الخطوات السابقة للخادم الوكيل المتسلسل إلى أن
تحدّد السبب الفعلي لخطأ
415 Unsupported Media Type
. - إذا كان الاسم المستعار لمضيف الخادم الهدف يشير إلى خادم الخلفية، هذا يعني أنّ خادم الخلفية يمرّر الترميز غير المتوافق إلى Apigee.
سجلات وصول Nginix
لتشخيص الخطأ باستخدام سجلات الوصول إلى NGINX:
- إذا كنت من مستخدمي السحابة الإلكترونية الخاصة، يمكنك استخدام سجلات وصول NGINX لتحديد
المعلومات الأساسية حول أخطاء
415
في HTTP. تحقَّق من سجلات وصول NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- ابحث عن أي أخطاء
415
خلال مدة محددة (إذا حدثت المشكلة في الماضي) أو إذا كانت هناك أي طلبات لا تزال يتعذّر تنفيذها مع415
. إذا عثرت على أي أخطاء
415
تتضمّن X-Apigee-fault-code مطابِقًا لقيمةprotocol.http.UnsupportedEncoding
، حدِّد قيمة X-Apigee-fault-codeنموذج للخطأ 415 من سجلّ الوصول إلى NGINX:
يحتوي إدخال النموذج أعلاه من سجل الوصول إلى NGINX على القيم التالية للسمة X- Apigee-error-code وX-Apigee-Error-source:.
عناوين الاستجابة القيمة X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source MP
وقد يكون للسمة X-Apigee-fault-source أيضًاX-Apigee-fault-source القيمةX-Apigee-fault-source
السبب: ترميز غير متوافق في الطلب
التشخيص
- حدِّد رمز الخطأ ومصدر الخطأ للخطأ الذي يتم رصده باستخدام مراقبة واجهة برمجة التطبيقات أو سجلات الوصول إلى NGINX كما هو موضّح في خطوات التشخيص الشائعة.
- إذا كان رمز الخطأ هو
protocol.http.UnsupportedEncoding
ومصدر الخطأ يحتوي على القيمةapigee
أوMP
، يعني ذلك أنّ الطلب الذي أرسله تطبيق العميل يحتوي على ترميز غير متوافق في عنوان الطلبContent-Encoding
. - يمكنك تحديد قيمة الترميز غير المتوافق الذي يتم تمريره كجزء من طلب HTTP
باستخدام إحدى الطرق التالية:
رسالة الخطأ
باستخدام رسالة الخطأ:إذا كان بإمكانك الوصول إلى رسالة الخطأ الكاملة التي تم تلقّيها من Apigee Edge، يُرجى الرجوع إلى
faultstring
. يحتويfaultstring
على قيمة الترميز النهائي غير المتوافق.نموذج لرسالة الخطأ:
"faultstring":"Unsupported Encoding \"UTF-8\""
في رسالة الخطأ أعلاه، يُرجى العلم بأنّ قيمة الترميز غير المتوافق هي
“UTF-8”
كما هو موضّح فيfaultstring
.بما أنّ الترميز
“UTF-8”
ليس متوافقًا مع Apigee Edge، سيتعذّر تنفيذ هذا الطلب مع ظهور الخطأ415 Unsupported Media Type
برمز الخطأ:protocol.http.UnsupportedEncoding
.
الطلب الفعلي
باستخدام الطلب الفعلي:- إذا لم يكن لديك إمكانية الوصول إلى الطلب الفعلي الذي قدّمه تطبيق العميل، انتقِل إلى الحلّ.
- إذا كان بإمكانك الوصول إلى الطلب الفعلي الذي أجراه تطبيق العميل، اتّبِع الخطوات التالية:
- تحديد القيمة التي تم تمريرها إلى عنوان الطلب
Content-Encoding.
- إذا لم تكن القيمة التي تم تمريرها إلى عنوان الطلب
Content-Encoding
من بين القيم المدرَجة في الترميز المتوافق، يكون سبب هذا الخطأ هو السبب.نموذج طلب:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
يرسل الطلب النموذجي أعلاه القيمة
"UTF-8"
إلى العنوانContent- Encoding
، وهو ليس ترميزًا متوافقًا في Apigee Edge. لذلك، تعذَّر تنفيذ هذا الطلب مع ظهور الخطأ415 Unsupported Media Type
مع رمز الخطأ:protocol.http.UnsupportedEncoding
.
- تحديد القيمة التي تم تمريرها إلى عنوان الطلب
درجة الدقّة
- يمكنك الرجوع إلى قائمة الترميز المتوافقة مع Apigee في الترميز المتوافق.
- تأكَّد من أنّ تطبيق العميل يرسل ما يلي دائمًا:
- الترميز المتوافق فقط كقيمة لعنوان
Content-Encoding
في الطلب - حمولة الطلب بالتنسيق المتوافق مع Apigee Edge وتتطابق مع التنسيق
المحدّد في العنوان
Content-Encoding
- الترميز المتوافق فقط كقيمة لعنوان
في المثال أعلاه، تحتوي حمولة الطلب على الإضافة
gz
التي تشير إلى أنّ المحتوى يجب أن يكونgzip
. يمكنك حلّ هذه المشكلة من خلال إرسال عنوان الطلب على شكلContent-Encoding: gzip
وحمولة الطلب بالتنسيقgzip
:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
السبب: ترميز غير متوافق في الاستجابة
التشخيص
- حدِّد رمز الخطأ ومصدر الخطأ للخطأ الذي يتم رصده باستخدام مراقبة واجهة برمجة التطبيقات أو أداة التتبُّع أو سجلات الوصول إلى NGINX كما هو موضّح في خطوات التشخيص الشائعة.
- إذا كانت القيمة
target
في مصدر الخطأ، يشير ذلك إلى أنّ الاستجابة التي يرسلها الخادم الخلفية تحتوي على ترميز غير متوافق في العنوانContent-Encoding
. - يمكنك تحديد قيمة الترميز غير المتوافق الذي يتم تمريره كجزء من استجابة HTTP من الخادم الخلفية باستخدام إحدى الطرق التالية:
رسالة الخطأ
استخدام رسالة الخطأ:إذا كان بإمكانك الوصول إلى رسالة الخطأ الكاملة التي تم تلقّيها من Apigee Edge، يُرجى الرجوع إلى
faultstring
. تحتوي السمةfaultstring
على قيمة الترميز غير المتوافق.نموذج لرسالة خطأ:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
في رسالة الخطأ أعلاه، يُرجى العلم بأنّ قيمة الترميز غير المتوافق هي
“UTF-8”
كما هو موضّح فيfaultstring
.بما أنّ ترميز
“UTF-8”
ليس ترميزًا متوافقًا في Apigee Edge، سيتعذّر تنفيذ هذا الطلب مع ظهور الخطأ415 Unsupported Media Type
مع ظهور رمز الخطأ:protocol.http.UnsupportedEncoding
.
أداة التتبُّع
باستخدام ميزة التتبُّع:- إذا لم يكن لديك تتبع الطلب الذي تعذّر تعذُّر إكماله، انتقِل إلى الحلّ.
- إذا سجّلت تتبُّع حالة الفشل، يمكنك تحديد الترميز
غير المتوافق الذي ضبطه خادم الخلفية كجزء من عنوان الاستجابة
Content-Encoding
على النحو الموضَّح في أداة التتبُّع.
درجة الدقّة
- يمكنك الرجوع إلى قائمة الترميز المتوافقة مع Apigee في الترميز المتوافق.
- تأكَّد من أنّ خادم الخلفية يرسل ما يلي دائمًا:
- الترميز المتوافق فقط كقيمة لعنوان
Content-Encoding
في الطلب - تشير هذه السمة إلى حمولة الاستجابة بالتنسيق المتوافق مع Apigee Edge وتتطابق مع التنسيق
المحدّد في العنوان
Content-Encoding
.
- الترميز المتوافق فقط كقيمة لعنوان
الترميز المتوافق
يسرد الجدول التالي تنسيق الترميز المتوافق مع Apigee Edge:
العنوان | الترميز | الوصف |
---|---|---|
Content-Encoding |
gzip |
تنسيق Unix gzip |
deflate |
يستخدِم هذا التنسيق بنية zlib مع خوارزمية ضغط الانكماش. |
المواصفات
يستجيب Apigee باستجابة الخطأ 415 Unsupported Media Type
وفقًا لمواصفات RFC التالية:
المواصفات |
---|
RFC 7231، القسم 6.5.13: 415 نوع الوسائط غير متوافق |
نقاط رئيسية يجب ملاحظتها
لاحظ ما يلي:
- إذا عرَضَ تطبيق Apigee الخطأ
415
بسبب ترميز غير متوافق تم تمريره في عنوانContent-Encoding
كجزء من طلب واجهة برمجة التطبيقات، حينئذٍ:- ولن تتمكّن من تسجيل تتبُّع هذه الطلبات.
-
لن تتمكن من تعديل تنسيق أو محتوى استجابة الخطأ المُرسَلة من Apigee Edge باستخدام السياسات مثل riseFault وAssignMessage.
ويرجع ذلك إلى أنّ هذا الخطأ يحدث في مرحلة مبكرة من معالج الرسائل قبل تنفيذ أي سياسة.
- إذا عرض Apigee الخطأ
415
بسبب تمرير ترميز غير متوافق في عنوان الاستجابة من خادم الخلفية، يجب إصلاحه في خادم الخلفية لتجنب هذا الخطأ. يُرجى التعاون مع فريق الخلفية بالشكل المناسب لحلّ هذه المشكلة.
إذا كنت لا تزال بحاجة إلى أي مساعدة من فريق دعم Apigee Edge، انتقِل إلى ضرورة جمع معلومات التشخيص.
ضرورة جمع معلومات التشخيص
إذا كنت لا تزال بحاجة إلى أي مساعدة من فريق دعم Apigee، يُرجى جمع معلومات التشخيص التالية، ثم التواصل مع فريق دعم Apigee Edge:
إذا كنت من مستخدمي Cloud Cloud، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- أكمِل أمر
curl
المستخدَم لإعادة إظهار الخطأ415
. - ملف التتبُّع الخاص بطلبات واجهة برمجة التطبيقات
إذا كنت مستخدم Cloud خاصًا، يُرجى تقديم المعلومات التالية:
- رسالة الخطأ الكاملة التي تم رصدها للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- ملف التتبُّع الخاص بطلبات واجهة برمجة التطبيقات
سجلات وصول 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