أنت تعرض مستندات 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 Public و Private Cloud |
| ترميز غير متوافق مستخدَم في الاستجابة | يحتوي عنوان استجابة خادم الخلفية Content-Encoding على ترميز
لا يتوافق مع Apigee Edge. |
مستخدمو Edge Public و Private Cloud |
خطوات التشخيص الشائعة
لتشخيص الخطأ، يمكنك استخدام أي من الطرق التالية:
مراقبة واجهة برمجة التطبيقات
لتشخيص الخطأ باستخدام مراقبة واجهة برمجة التطبيقات:
- سجِّل الدخول إلى حسابك على 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).
- انتظِر إلى أن يحدث الخطأ
تأكَّد من تفعيل عرض كل FlowInfos:
- اختَر أحد الطلبات التي تعذّر تنفيذها وافحص عملية التتبُّع.
- يمكنك التنقّل خلال مراحل عملية التتبُّع المختلفة وتحديد مكان حدوث الفشل.
ستجد الخطأ عادةً في مسار بعد النقر على تم إرسال الطلب إلى الهدف. الخادم كما هو موضح أدناه:
سجِّل قيمة الخطأ من عملية التتبُّع.
يعرض نموذج التتبّع أعلاه الخطأ كـ
Unsupported Encoding "utf-8". منذ تُظهِر Apigee الخطأ بعد إرسال الطلب إلى خادم الخلفية، فيشير إلى أنّ خادم الخلفية أرسل عنوان الاستجابةContent-Encodingمع القيمة من"utf-8"، وهي ليست ترميز متوافق في Apigee.- انتقِل إلى مرحلة AX (البيانات المسجَّلة في "إحصاءات Google") في عملية التتبُّع وانقر عليها.
مرِّر للأسفل حتى تصل إلى قسم عناوين الخطأ / عناوين الاستجابة في تفاصيل المرحلة. اللوحة وتحديد قيم X-Apigee-fault-code وX-Apigee-fault-code كما هو موضح أدناه:
وستظهر لك قيم X-Apigee-fault-code وX-Apigee-fault-code على النحو التالي:
protocol.http.UnsupportedEncodingوtarget، مما يشير إلى أن هذا يعود سببها إلى تمرير قيمة الترميز غير المتوافقة"utf-8"بواسطة خادم الخلفية في عنوان الاستجابةContent-Encoding.عناوين الردود القيمة X-Apigee-fault-code protocol.http.UnsupportedEncodingX-Apigee-fault-source target- تحقق لمعرفة ما إذا كنت تستخدم
تسلسل استدعاء الدوال البرمجية، أي إذا كان الخادم الهدف/نقطة النهاية المستهدفة يستدعي قاعدة أخرى
الخادم الوكيل في Apigee.
لتحديد ذلك، يمكنك الرجوع إلى مرحلة تم إرسال الطلب إلى الخادم الهدف. انقر على إظهار Curl.
- تفتح نافذة تجعيد الطلب الذي تم إرساله إلى الخادم المستهدف والتي يمكنك من خلالها تحديد الاسم المستعار لمضيف الخادم المستهدف.
- إذا كان الاسم المستعار لمضيف الخادم المستهدف يشير إلى اسم مستعار لمضيف افتراضي، فحينئذٍ يكون الخادم الوكيل
والسلسلة. في هذه الحالة، تحتاج إلى تكرار جميع الخطوات المذكورة أعلاه للخادم الوكيل المتسلسل حتى
في تحديد سبب الخطأ
415 Unsupported Media Type. - إذا كان الاسم المستعار لمضيف الخادم الهدف يشير إلى خادم الخلفية، فإن ذلك يشير إلى أن يمرِّر خادم الخلفية الترميز غير المتوافق إلى Apigee.
سجلات وصول Nginix
لتشخيص الخطأ باستخدام سجلات وصول NGINX:
- إذا كنت مستخدمًا للسحابة الإلكترونية الخاص، يمكنك استخدام سجلات وصول NGINX لتحديد
المعلومات الأساسية حول أخطاء HTTP
415. تحقق من سجلات وصول 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-source..نموذج الخطأ 415 من سجلّ وصول NGINX:
يتضمن الإدخال النموذجي أعلاه من سجل وصول NGINX القيم التالية الخاصة بـ X- Apigee-يتوفر كود وX-Apigee-error-source:
عناوين الردود القيمة X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source MPوقد تحتوي X-Apigee-fault-source علىX-Apigee-fault-source القيمةX-Apigee-fault-source
السبب: ترميز غير متوافق في الطلب
التشخيص
- حدِّد رمز الخطأ ومصدر الخطأ للخطأ الذي تم رصده باستخدام واجهة برمجة التطبيقات. مراقبة أو الوصول إلى سجلات NGINX كما هو موضح في خطوات التشخيص الشائعة.
- إذا كان رمز الخطأ هو
protocol.http.UnsupportedEncodingوكان الخطأ قيمة المصدر (Source) هي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 |
تنسيق gzip لنظام التشغيل Unix |
deflate |
يستخدم هذا التنسيق بنية zlib مع خوارزمية ضغط الانكماش. |
المواصفات
تستجيب Apigee باستجابة الخطأ 415 Unsupported Media Type وفقًا لما تنص عليه
مواصفات RFC التالية:
| المواصفات |
|---|
| RFC 7231، الفقرة 6.5.13: 415 نوع الوسائط غير المتوافق |
نقاط رئيسية يجب مراعاتها
يُرجى ملاحظة ما يلي:
- في حال عرض خطأ
415من خلال Apigee بسبب تمرير ترميز غير متوافق العنوانContent-Encodingكجزء من طلب البيانات من واجهة برمجة التطبيقات، يجب بعد ذلك:- لن تتمكّن من تسجيل أثر هذه الطلبات.
-
لن تتمكن من تعديل تنسيق أو محتوى استجابة الخطأ المرسلة من Apigee Edge باستخدام سياسات، مثل يُمْكِنُ رَفْعْ عَمَلِيَّةِ الْقِرَاءَة الْخَاصَّة بِعَنَاوِينْ assignMessage.
وهذا لأن هذا الخطأ يحدث في مرحلة مبكرة في معالج الرسائل قبل أي يمكن تطبيق سياسته.
- في حال عرض خطأ
415من خلال Apigee بسبب تمرير ترميز غير متوافق في عنوان الاستجابة من خادم الخلفية، يجب إصلاحها في خادم الخلفية لتجنب هذا الخطأ. يُرجى العمل مع فريق الخلفية حسبما تقتضي الحاجة لحلّ هذه المشكلة.
إذا كنت لا تزال بحاجة إلى مساعدة من Apigee Edge Support، انتقِل إلى ضرورة جمع معلومات التشخيص.
يجب جمع معلومات التشخيص
إذا كنت بحاجة إلى مساعدة من فريق دعم Apigee، يُرجى جمع المعلومات التالية معلومات التشخيص، ثم التواصل مع فريق دعم Apigee Edge:
إذا كنت من مستخدمي Cloud Public، يُرجى تقديم المعلومات التالية:
- اسم المؤسسة
- اسم البيئة
- اسم الخادم الوكيل لواجهة برمجة التطبيقات
- إكمال الأمر
curlالمُستخدَم لإعادة إنتاج الخطأ415 - ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
إذا كنت مستخدمًا للسحابة الإلكترونية الخاصة، قدِّم المعلومات التالية:
- ظهور رسالة خطأ كاملة للطلبات التي تعذّر تنفيذها
- اسم البيئة
- حزمة الخادم الوكيل لواجهة برمجة التطبيقات
- ملف تتبُّع طلبات البيانات من واجهة برمجة التطبيقات
سجلّات وصول 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