ما هو كود الحالة 415: نوع الوسائط غير المدعوم؟ خطأ تنسيق الملف

INEZA Felin-Michel

INEZA Felin-Michel

14 أكتوبر 2025

ما هو كود الحالة 415: نوع الوسائط غير المدعوم؟ خطأ تنسيق الملف

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

أنت تدمج مع واجهة برمجة تطبيقات (API) جديدة. تقوم بصياغة طلب JSON بعناية مع جميع البيانات الصحيحة، وترسله، وبدلاً من استجابة النجاح التي توقعتها، تتلقى خطأ محبطًا: 415 Unsupported Media Type. تتحقق مرة أخرى من مصادقتك، وعنوان URL لنقطة النهاية، وحمولة بياناتك كل شيء يبدو صحيحًا. فما الخطأ الذي حدث؟

المشكلة على الأرجح ليست في ما أرسلته، بل في كيف أخبرت الخادم بما كنت ترسله. يوضح رمز الحالة هذا الشائع ولكن غالبًا ما يكون مربكًا، حالات تعطل الاتصال في تنسيق البيانات.

خطأ 415 هو طريقة الخادم للقول: "أنا أفهم أنك تحاول إرسال بيانات لي، لكنني لا أتحدث هذه اللغة. كنت أتوقع منك إرسالها بتنسيق مختلف يمكنني معالجته فعليًا."

إذا كنت مطورًا تعمل مع واجهات برمجة التطبيقات (APIs) سواء كنت تبنيها أو تستهلكها فإن فهم رمز الحالة 415 أمر بالغ الأهمية للتكامل السلس وتجنب جلسات تصحيح الأخطاء المحبطة.

في هذا الدليل المفصل، سنستكشف معنى رمز الحالة 415 Unsupported Media Type، ولماذا يحدث، والسيناريوهات النموذجية، والطرق العملية لإصلاحه أو تجنبه. سواء كنت مطورًا يتعامل مع تكاملات واجهة برمجة التطبيقات أو فضوليًا حول كيفية عمل اتصالات الويب، سيساعدك هذا المنشور على إتقان أخطاء 415.

💡
إذا كنت ترغب في التأكد من أن طلبات واجهة برمجة التطبيقات الخاصة بك لا تفشل أبدًا بسبب أنواع الوسائط غير الصحيحة، جرب Apidog اليوم. إنه مجاني للتنزيل، وسهل الاستخدام، ويساعد المطورين على اكتشاف عدم تطابق أنواع المحتوى على الفور. باستخدام Apidog، يمكنك محاكاة رؤوس مختلفة، وتشغيل اختبارات آلية، والتعاون مع فريقك في مكان واحد.

زر

حسنًا، دعنا نتعمق ونزيل الارتباك حول HTTP 415 مرة واحدة وإلى الأبد.

المشكلة: التحدث بلغة الخادم

تخيل أنك ترسل رسالة بالبريد إلى شخص يقرأ الفرنسية فقط. يمكنك كتابة رسالة إنجليزية بليغة ومتقنة تمامًا، ولكن إذا كان المستلم لا يفهم الإنجليزية، فستكون رسالتك عديمة الفائدة. خطأ 415 هو المكافئ الرقمي لهذا السيناريو.

غالبًا ما تُبنى خوادم الويب لفهم تنسيقات بيانات محددة. إنها تحتاج إلى معرفة "اللغة" التي كُتبت بها البيانات الواردة حتى تتمكن من تحليلها ومعالجتها بشكل صحيح. رأس Content-Type هو الطريقة التي يخبر بها العميل الخادم بتنسيق البيانات.

ماذا يعني HTTP 415 Unsupported Media Type في الواقع؟

يشير رمز الحالة 415 Unsupported Media Type إلى أن الخادم يفهم الطلب، لكنه يرفض قبوله لأن تنسيق الحمولة (نوع الوسائط) بتنسيق غير مدعوم من قبل الخادم للمورد المطلوب.

بشكل أبسط، يرسل عميلك (مثل Postman أو Apidog أو متصفحك) البيانات بتنسيق لا يفهمه الخادم أو لم يتم تكوينه لمعالجته.

يقول الخادم أساسًا: "لقد تلقيت بياناتك، لكن لا يمكنني معالجتها لأنها بتنسيق لا أفهمه أو لا أدعمه لنقطة النهاية هذه بالذات."

تبدو استجابة 415 النموذجية كالتالي:

HTTP/1.1 415 Unsupported Media TypeContent-Type: application/json
{
  "error": "Unsupported Media Type",
  "message": "The request payload format is not supported.",
  "supported_types": ["application/json", "application/xml"]
}

يخبرك هذا، "مرحبًا! لقد تلقيت طلبك، لكن لا يمكنني معالجة نوع المحتوى هذا."

يتعلق هذا غالبًا بقيمة رأس **Content-Type** في طلب HTTP الذي يحدد تنسيق البيانات المرسلة (مثل JSON أو XML أو بيانات النموذج متعددة الأجزاء). قد توفر بعض الخوادم معلومات أكثر فائدة حول التنسيقات التي تدعمها، بينما قد تُرجع خوادم أخرى رسالة خطأ عامة أكثر.

تعمق: التعريف الفني (للفضوليين)

وفقًا لـ **مواصفات HTTP/1.1 (RFC 7231)**، يحدد القسم 6.5.13 رمز الحالة 415 على النحو التالي:

"يشير رمز الحالة 415 (Unsupported Media Type) إلى أن الخادم الأصلي يرفض خدمة الطلب لأن الحمولة بتنسيق غير مدعوم بواسطة هذه الطريقة على المورد المستهدف."

النقطة الأساسية هنا:

جوهر المسألة: رأس Content-Type

رأس Content-Type هو الجزء الحاسم من المعلومات الذي يحدد ما إذا كنت ستحصل على خطأ 415 أو استجابة ناجحة. يخبر هذا الرأس الخادم بنوع البيانات التي ترسلها في نص الطلب.

فيما يلي أكثر أنواع المحتوى شيوعًا التي ستصادفها:

قيم Content-Type الشائعة:

لواجهات برمجة تطبيقات JSON:

لبيانات النموذج:

لـ XML:

للنص العادي:

كيف يحدث خطأ 415: شرح خطوة بخطوة

دعنا نمر بالضبط بما يحدث عند حدوث خطأ 415.

الخطوة 1: يرسل العميل طلبًا

يرسل تطبيق العميل طلبًا إلى نقطة نهاية واجهة برمجة تطبيقات الخادم. على سبيل المثال، لنفترض أننا نحاول إنشاء مستخدم جديد:

POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/xmlContent-Length: 125
<user><name>John Doe</name><email>john@example.com</email></user>

الخطوة 2: يتحقق الخادم من Content-Type

يتلقى الخادم الطلب ويفحص رأس `Content-Type`. يرى `application/xml` ويتحقق من تكوينه لنقطة النهاية `/api/users`.

الخطوة 3: يدرك الخادم المشكلة

تم تكوين نقطة النهاية `/api/users` بالخادم لقبول `application/json` فقط. ليس لديه محلل XML معد لهذه النقطة، ولا يعرف كيفية التعامل مع البيانات الواردة.

الخطوة 4: استجابة 415

بدلاً من محاولة معالجة البيانات غير الصحيحة (مما قد يؤدي إلى أخطاء أو مشكلات أمنية)، يستجيب الخادم برمز الحالة `415 Unsupported Media Type`.

الخطوة 5: يتلقى العميل الخطأ

يتلقى تطبيق العميل استجابة `415` ويحتاج إلى التعامل معها بشكل مناسب عادةً عن طريق تصحيح رأس `Content-Type` وإعادة إرسال الطلب.

سيناريوهات شائعة قد تواجه فيها 415

1. تحميل الملفات في واجهات برمجة التطبيقات

إذا حاولت تحميل صورة باستخدام `application/json` بدلاً من `multipart/form-data`، فلن يفهم الخادم محتوى الملف.

2. واجهات برمجة تطبيقات مخصصة ذات تحقق صارم

ترفض واجهات برمجة التطبيقات ذات التحقق الصارم من المخطط أي طلب لا يتطابق مع قواعدها.

3. تطبيقات الهاتف المحمول التي تستخدم حزم تطوير برامج قديمة (SDKs)

في بعض الأحيان، ترسل حزم تطوير البرامج القديمة (SDKs) طلبات برؤوس قديمة، والتي لم تعد واجهات برمجة التطبيقات الحديثة تدعمها.

4. طلبات عبر المصادر (مشكلات CORS)

قد تقيد بعض تكوينات CORS أنواع المحتوى المقبولة، مما يتسبب بشكل غير مباشر في استجابة 415.

دور رأس Content-Type

يخبر رأس **Content-Type** في طلبات HTTP الخادم بنوع البيانات التي يرسلها العميل.

على سبيل المثال:

إذا كان هذا الرأس مفقودًا أو يشير إلى شيء لا يستطيع الخادم التعامل معه، فمن المحتمل أن ترى استجابة 415.

سيناريوهات واقعية تسبب أخطاء 415

السيناريو 1: رأس Content-Type مفقود

POST /api/users HTTP/1.1Host: api.example.com

{"name": "John Doe", "email": "john@example.com"}

سترفض العديد من الخوادم هذا لأنه لا يوجد رأس `Content-Type` يخبرهم بكيفية تفسير البيانات.

السيناريو 2: Content-Type خاطئ للبيانات

POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/x-www-form-urlencoded

{"name": "John Doe", "email": "john@example.com"}

يقول الرأس إنها بيانات نموذج، لكن النص هو JSON. هذا عدم التطابق يربك الخادم.

السيناريو 3: الخادم لا يدعم التنسيق

POST /api/users HTTP/1.1Host: api.example.comContent-Type: application/xml
<user><name>John</name></user>

قد يدعم الخادم JSON فقط لنقطة النهاية هذه، حتى لو كان XML صحيح التكوين.

اختبار التعامل مع Content-Type باستخدام Apidog

واجهة مستخدم Apidog الجديدة

دعنا نتحدث عن كيف يمكن لـ **Apidog** أن يجعل حياتك أسهل عند التعامل مع هذه الأخطاء. اختبار أنواع المحتوى المختلفة والتأكد من أن واجهة برمجة التطبيقات الخاصة بك تتعامل معها بشكل صحيح هو المكان الذي يتألق فيه Apidog. إنه يجعل من السهل بشكل لا يصدق اختبار هذه السيناريوهات دون كتابة تعليمات برمجية معقدة.

باستخدام Apidog، يمكنك:

  1. تعيين رؤوس Content-Type بسهولة: استخدم واجهة Apidog البديهية للاختيار من بين أنواع المحتوى الشائعة أو تحديد أنواع مخصصة.
  2. اختبار تنسيقات متعددة: اختبر بسرعة نفس نقطة النهاية بأنواع محتوى مختلفة (JSON، XML، بيانات النموذج) لمعرفة كيفية استجابة الخادم الخاص بك.
  3. التحقق من استجابات الأخطاء: تأكد من أن واجهة برمجة التطبيقات الخاصة بك تُرجع استجابات 415 مناسبة مع رسائل خطأ مفيدة عند تلقي تنسيقات غير مدعومة.
  4. اختبار الحالات القصوى: جرب أنواع محتوى غير صحيحة، أو رؤوس مفقودة، أو بيانات غير متطابقة للتأكد من أن واجهة برمجة التطبيقات الخاصة بك تتعامل معها بلباقة.
  5. أتمتة اختبار Content-Type: أنشئ مجموعات اختبار تتحقق تلقائيًا من أن واجهة برمجة التطبيقات الخاصة بك تقبل التنسيقات المدعومة بشكل صحيح وترفض التنسيقات غير المدعومة بشكل صحيح.

زر

على سبيل المثال، عندما تقوم بإعداد طلب POST في Apidog، فإنه يطبق تلقائيًا `Content-Type` الصحيح بناءً على نوع نص طلبك (JSON، XML، form-data، إلخ).

هذا يعني مفاجآت أقل ولا مزيد من أخطاء 415 التي تفسد جلسات الاختبار الخاصة بك. يمكن أن يوفر هذا الاختبار الاستباقي ساعات من تصحيح الأخطاء ويضمن أن واجهة برمجة التطبيقات الخاصة بك تتصرف بشكل متوقع.

415 مقابل أخطاء 4xx الأخرى: معرفة الفرق

من المهم التمييز بين `415` وأخطاء العميل الأخرى:

أفضل الممارسات للتعامل مع أخطاء 415

لمستهلكي واجهة برمجة التطبيقات (مطورين العميل):

لمقدمي واجهة برمجة التطبيقات (مطورين الخادم):

مثال على استجابة 415 مصممة جيدًا:

HTTP/1.1 415 Unsupported Media TypeContent-Type: application/json
{
  "error": "unsupported_media_type",
  "message": "This endpoint only accepts application/json payloads.",
  "supported_types": ["application/json"],
  "documentation": "<https://api.example.com/docs/content-types>"
}

أخطاء Content-Type الشائعة التي تسبب 415

فيما يلي بعض الأخطاء الشائعة التي يقع فيها المطورون كثيرًا:

الخطأ الوصف مثال
استخدام اسم رأس خاطئ خطأ مطبعي أو مشكلة في حالة الأحرف contenttype بدلاً من Content-Type
إرسال بيانات نموذج بدلاً من JSON الخادم يتوقع JSON فقط application/x-www-form-urlencoded
نسيان ترميز الأحرف (charset) معلومات ترميز مفقودة application/json; charset=utf-8
إرسال نص فارغ حمولة مطلوبة مفقودة POST /api بدون بيانات
استخدام أنواع ملفات غير مدعومة تنسيق تحميل خاطئ تحميل .exe بدلاً من .png

تبدو هذه صغيرة ولكنها يمكن أن تسبب أعطالًا كبيرة في الطلبات.

إصلاحات شائعة لأخطاء 415

إذا كنت تواجه خطأ 415، فإليك الحلول الأكثر شيوعًا:

أضف رأس Content-Type المفقود:

POST /api/users HTTP/1.1Content-Type: application/json

صحح رأس Content-Type:

# قبل (خطأ):
Content-Type: text/plain
# بعد (صحيح):
Content-Type: application/json

حوّل بياناتك إلى تنسيق مدعوم:

إذا كان الخادم يقبل JSON فقط، فتأكد من أنك ترسل JSON صحيحًا، وليس XML أو بيانات نموذج.

تحقق من الأخطاء المطبعية:

# خطأ:
Content-Type: application/jason

# صحيح:
Content-Type: application/json

اعتبارات متقدمة

تفاوض المحتوى

تدعم بعض واجهات برمجة التطبيقات المتطورة تفاوض المحتوى، حيث يمكن للعميل تحديد التنسيقات التي يمكنه قبولها باستخدام رأس `Accept`:

GET /api/users/123 HTTP/1.1Accept: application/json, application/xml;q=0.9

يخبر هذا الخادم: "أفضل JSON، ولكن يمكنني قبول XML إذا لزم الأمر."

معامل Charset

بالنسبة للتنسيقات النصية، قد تحتاج إلى تحديد ترميز الأحرف:

Content-Type: application/json; charset=utf-8

الخاتمة: أهمية التواصل الواضح

يسلط رمز حالة HTTP `415 Unsupported Media Type` الضوء على جانب أساسي من اتصالات الويب: يجب أن يتفق الطرفان على "اللغة" التي يستخدمانها لتبادل البيانات. لا يكفي إرسال البيانات الصحيحة، بل يجب إرسالها بالتنسيق الصحيح والإعلان بشكل صحيح عن ماهية هذا التنسيق.

يُعد HTTP 415 Unsupported Media Type جزءًا أساسيًا لضمان أن الخوادم تعالج فقط تنسيقات البيانات المتوقعة والمتوافقة. التعامل الصحيح مع رؤوس Content-Type، واتباع مواصفات واجهة برمجة التطبيقات، والاختبار باستخدام أدوات مثل Apidog يمكن أن يقلل هذه الأخطاء بشكل كبير.

فهم أخطاء `415` والتعامل معها بشكل صحيح سيجعلك مستهلكًا لواجهة برمجة التطبيقات أكثر فعالية ومصممًا أفضل لواجهة برمجة التطبيقات. من خلال الاهتمام بأنواع المحتوى وتوفير اتصال واضح بين العملاء والخوادم، يمكنك تجنب هذه الأخطاء المحبطة وبناء تكاملات أكثر قوة. تذكر أن واجهات برمجة التطبيقات تزدهر بالاتصال الواضح بين العميل والخادم. إذا كانوا يتحدثون نفس "اللغة" (في هذه الحالة، نوع الوسائط)، فكل شيء يسير بسلاسة.

لذا في المرة القادمة التي تواجه فيها خطأ `415`، تذكر أنه ليس فشلًا معقدًا في الخادم - إنه مشكلة اتصال بسيطة يسهل إصلاحها عادةً. وعندما تقوم ببناء أو اختبار واجهات برمجة التطبيقات، فإن استخدام أداة مثل Apidog سيساعدك على ضمان أن أنواع المحتوى الخاصة بك صحيحة دائمًا، مما يمنع حدوث هذه الأخطاء قبل وقوعها.

زر

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات