شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
علامت
برنامه سرویس گیرنده یک کد وضعیت HTTP 415 Unsupported Media Type با protocol.http.UnsupportedEncoding کد خطا دریافت می کند.http.UnsupportedEncoding به عنوان پاسخ به تماس های API.
پیغام خطا
برنامه مشتری کد پاسخ زیر را دریافت می کند:
HTTP/1.1 415 Unsupported Media Type
علاوه بر این، ممکن است پیغام خطایی مشابه تصویر زیر مشاهده کنید:
{
"fault":{
"faultstring":"Unsupported Encoding \"UTF-8\"",
"detail":{
"errorcode":"protocol.http.UnsupportedEncoding"
}
}
}علل احتمالی
این خطا در صورتی رخ میدهد که مقدار هدر Content-Encoding که در درخواست HTTP ارسال شده توسط مشتری به Apigee یا پاسخ HTTP ارسال شده توسط سرور backend به Apigee مشخص شده است، مطابق با مشخصات RFC 7231 حاوی کدگذاری پشتیبانیشده توسط Apigee نباشد. ، بخش 6.5.13: 415 نوع رسانه پشتیبانی نشده .
دلایل احتمالی این خطا به شرح زیر است:
| علت | توضیحات | دستورالعمل های عیب یابی قابل اجرا برای |
|---|---|---|
| رمزگذاری پشتیبانی نشده مورد استفاده در درخواست | هدر درخواست Content-Encoding حاوی رمزگذاری است که توسط Apigee Edge پشتیبانی نمیشود. | کاربران Edge Public و Private Cloud |
| در پاسخ از رمزگذاری پشتیبانی نشده استفاده شده است | هدر پاسخ سرور باطن Content-Encoding حاوی رمزگذاری است که توسط Apigee Edge پشتیبانی نمیشود. | کاربران Edge Public و Private Cloud |
مراحل تشخیص رایج
برای تشخیص خطا می توانید از یکی از روش های زیر استفاده کنید:
مانیتورینگ API
برای تشخیص خطا با استفاده از API Monitoring:
- به حساب Apigee Edge خود وارد شوید .
به سازمانی که میخواهید مشکل را در آن بررسی کنید بروید:

- به صفحه Analyze > API Monitoring > Investigate بروید.
- بازه زمانی خاصی را که در آن خطاها را مشاهده کرده اید انتخاب کنید.
- مطمئن شوید که فیلتر پروکسی روی همه تنظیم شده باشد.
- کد خطا را در برابر زمان ترسیم کنید.
سلولی را انتخاب کنید که دارای
protocol.http.UnsupportedEncodingکد خطا باشد.http.UnsupportedEncoding مانند شکل زیر:
اطلاعات مربوط به
protocol.http.UnsupportedEncodingکد خطا.http.UnsupportedEncoding مطابق شکل زیر نمایش داده می شود:
برای مشاهده اطلاعات بیشتر، روی View logs کلیک کنید و یکی از درخواستهای شکست خورده با خطای
415را گسترش دهید:
- از پنجره Logs به جزئیات زیر توجه کنید:
- منبع خطا: این نشان می دهد که خطا توسط
apigeeیاtargetبرگردانده شده است. - کد خطا: باید با
protocol.http.UnsupportedEncodingمطابقت داشته باشد.
- منبع خطا: این نشان می دهد که خطا توسط
- اگر منبع خطا
apigeeباشد، این نشان میدهد که درخواست حاوی کدگذاری پشتیبانینشده در سربرگContent-Encodingاست. - اگر منبع خطا
targetباشد، این نشان میدهد که پاسخ سرور پشتیبان حاوی کدگذاری پشتیبانینشده در سربرگContent-Encodingاست.
ابزار ردیابی
برای تشخیص خطا با استفاده از ابزار Trace:
- جلسه ردیابی را فعال کنید و یا:
- منتظر بمانید تا خطای
415 Unsupported Media Typeرخ دهد یا - اگر میتوانید مشکل را بازتولید کنید، برای بازتولید خطای
415 Unsupported Media Typeبا API تماس بگیرید.
- منتظر بمانید تا خطای
مطمئن شوید که Show all FlowInfos فعال باشد:

- یکی از درخواست های ناموفق را انتخاب کنید و ردیابی را بررسی کنید.
- در مراحل مختلف ردیابی پیمایش کنید و محل وقوع شکست را پیدا کنید.
خطا را معمولاً در یک جریان پس از ارسال درخواست به سرور هدف، مطابق شکل زیر خواهید دید:

به مقدار خطا از ردیابی توجه کنید.
ردیابی نمونه بالا خطا را به عنوان
Unsupported Encoding "utf-8"نشان می دهد. از آنجایی که این خطا توسط Apigee پس از ارسال درخواست به سرور باطن مطرح میشود، نشان میدهد که سرور بکاند سرصفحه پاسخContent-Encodingرا با مقدار"utf-8"ارسال کرده است، که یک کدگذاری پشتیبانیشده در Apigee نیست.- در Trace به فاز AX (Analytics Data Recorded) بروید و روی آن کلیک کنید.
به قسمت Error / Response Headers در پانل جزئیات فاز بروید و مقادیر X-Apigee-fault-code و X-Apigee-fault-source را مطابق شکل زیر تعیین کنید:

مقادیر X-Apigee-fault-code و X-Apigee-fault-source را
"utf-8"عنوانprotocol.http.UnsupportedEncodingمشاهده خواهید کردtargetسرور باطن در هدر پاسخContent-Encoding.سرصفحه های پاسخ ارزش X-Apigee-fault-code protocol.http.UnsupportedEncodingX-Apigee-fault-source target- بررسی کنید که آیا از زنجیره پروکسی استفاده می کنید. یعنی اگر سرور هدف/نقطه پایانی هدف در حال فراخوانی پروکسی دیگری در Apigee باشد.
برای تعیین این مورد، به مرحله درخواست ارسال شده به سرور هدف برگردید. روی Show Curl کلیک کنید.

- پنجره Curl for Request Sent to Target Server باز می شود که از آن می توانید نام مستعار میزبان سرور مورد نظر را تعیین کنید.
- اگر نام مستعار میزبان سرور هدف به یک نام مستعار میزبان مجازی اشاره می کند، آنگاه زنجیره پروکسی است. در این حالت، باید تمام مراحل بالا را برای پراکسی زنجیرهای تکرار کنید تا مشخص کنید که چه چیزی باعث خطای
415 Unsupported Media Typeاست. - اگر نام مستعار میزبان سرور مورد نظر به سرور باطن شما اشاره کند، این نشان می دهد که سرور باطن شما رمزگذاری پشتیبانی نشده را به Apigee ارسال می کند.
گزارش های دسترسی Nginix
برای تشخیص خطا با استفاده از گزارش های دسترسی NGINX:
- اگر کاربر Private Cloud هستید، می توانید از گزارش های دسترسی 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-fault-code و X-Apigee-fault-source است:
سرصفحه های پاسخ ارزش X-Apigee-fault-code protocol.http.Response405WithoutAllowHeaderX-Apigee-fault-source MPX-Apigee-fault-source نیز می تواند این را داشته باشد
targetارزش .
علت: رمزگذاری پشتیبانی نشده در درخواست
تشخیص
- کد خطا و منبع خطا را برای خطای مشاهده شده با استفاده از مانیتورینگ API یا گزارش های دسترسی 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انجام نمیشود.
درخواست واقعی
با استفاده از درخواست واقعی:- اگر به درخواست واقعی ارائه شده توسط برنامه مشتری دسترسی ندارید، به Resolution بروید.
- اگر به درخواست واقعی ارائه شده توسط برنامه مشتری دسترسی دارید، مراحل زیر را انجام دهید:
- مقدار ارسال شده به هدر درخواست
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
علت: رمزگذاری پشتیبانی نشده در پاسخ
تشخیص
- کد خطا و منبع خطا را برای خطای مشاهده شده با استفاده از API Monitoring، Trace Tool یا گزارش های دسترسی 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انجام نمیشود.
ابزار ردیابی
استفاده از Trace:- اگر ردیابی درخواست ناموفق را ندارید، به Resolution بروید.
- اگر ردی برای شکست ثبت کردهاید، میتوانید رمزگذاری پشتیبانینشدهای را که توسط سرور باطن ارسال شده به عنوان بخشی از سرصفحه پاسخ
Content-Encodingهمانطور که در ابزار Trace توضیح داده شده است، تعیین کنید.
قطعنامه
- به لیست رمزگذاری های پشتیبانی شده توسط Apigee در رمزگذاری پشتیبانی شده مراجعه کنید
- اطمینان حاصل کنید که سرور باطن همیشه موارد زیر را ارسال می کند:
- فقط رمزگذاری پشتیبانی شده به عنوان مقدار هدر
Content-Encodingدر درخواست - بار پاسخ در قالب پشتیبانی شده به Apigee Edge و با قالب مشخص شده در سربرگ
Content-Encodingمطابقت دارد.
- فقط رمزگذاری پشتیبانی شده به عنوان مقدار هدر
پشتیبانی از رمزگذاری
جدول زیر فرمت کدگذاری پشتیبانی شده توسط Apigee Edge را فهرست می کند:
| سربرگ | رمزگذاری | توضیحات |
|---|---|---|
Content-Encoding | gzip | فرمت یونیکس gzip |
deflate | این فرمت از ساختار zlib با الگوریتم فشرده سازی deflate استفاده می کند. |
مشخصات
Apigee با پاسخ خطای 415 Unsupported Media Type مطابق مشخصات RFC زیر پاسخ میدهد:
| مشخصات |
|---|
| RFC 7231، بخش 6.5.13: 415 نوع رسانه پشتیبانی نشده |
نکات کلیدی قابل توجه
به موارد زیر توجه کنید:
- اگر خطای
415توسط Apigee به دلیل رمزگذاری پشتیبانی نشده که در سربرگContent-Encodingبه عنوان بخشی از درخواست API ارسال شده است، برگردانده شود، پس:- شما نمی توانید برای چنین درخواست هایی ردیابی کنید.
شما نمی توانید قالب یا محتوای پاسخ خطای ارسال شده توسط Apigee Edge را با استفاده از سیاست هایی مانند RaiseFault، AssignMessage تغییر دهید.
این به این دلیل است که این خطا در مرحله اولیه در پردازشگر پیام قبل از اجرای هر خط مشی رخ می دهد.
- اگر خطای
415توسط Apigee به دلیل رمزگذاری پشتیبانی نشده ارسال شده در هدر پاسخ از سرور باطن شما برگردانده شود، برای جلوگیری از این خطا باید در سرور باطن رفع شود . لطفاً برای رفع این مشکل با تیم پشتیبان خود در حد مناسب کار کنید.
اگر هنوز به کمک Apigee Edge Support نیاز دارید، به اطلاعات تشخیصی باید جمع آوری شود.
باید اطلاعات تشخیصی را جمع آوری کرد
اگر همچنان از پشتیبانی Apigee به کمک نیاز دارید، اطلاعات تشخیصی زیر را جمع آوری کنید و سپس با پشتیبانی Apigee Edge تماس بگیرید:
اگر کاربر Public Cloud هستید، اطلاعات زیر را ارائه دهید:
- نام سازمان
- نام محیط زیست
- نام پروکسی API
- دستور کامل
curlکه برای بازتولید خطای415استفاده می شود - فایل ردیابی برای درخواست های API
اگر کاربر Private Cloud هستید، اطلاعات زیر را ارائه دهید:
- پیام خطای کامل برای درخواست های ناموفق مشاهده شد
- نام محیط زیست
- بسته پروکسی API
- فایل ردیابی برای درخواست های API
گزارش های دسترسی 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