204 No Content: نجاح بردّ فارغ
204 No Content تعني أن الطلب نجح وأن الخادم لا يرسل جسمًا عن قصد، وهو شائع في تحديثات API وطلبات CORS التمهيدية.
204 No Content يعني أن الطلب نجح وأنه لا يوجد شيء يُرسَل في الرد عن قصد. هو أمر معتاد في تحديثات API وعمليات الحذف ووسائل التتبع (beacons) وفحوصات المتصفح التمهيدية (preflight)، لكنه مشكلة عندما يُعاد لصفحة يفترض أن فيها محتوى.
التعريف
يقول RFC 9110، القسم 15.3.5 إن الخادم نفّذ الطلب وليس هناك محتوى إضافي يرسله. ولا يمكن للرد 204 أن يحمل جسمًا: ينتهي الرد عند الترويسات، وأي بيانات وصفية فيها تصف المورد المستهدف بعد تنفيذ العملية. وبالنسبة للمتصفح يعني 204 «ابقَ حيث أنت»، فالرابط أو النموذج الذي يعيد 204 لا يغيّر الصفحة. والرد 204 قابل للتخزين المؤقت افتراضيًا.
أين يكون 204 صحيحًا
- تحديثات PUT أو PATCH وطلبات DELETE في واجهات REST.
- ردود CORS التمهيدية على طلبات
OPTIONS. - نقاط التحليلات والتتبع التي تحتاج فقط إلى استقبال البيانات.
- فحوصات الاتصال: يطلب Android مثلًا رابط
generate_204لاكتشاف بوابات الدخول المقيِّدة (captive portals).
التأثير على السيو
بالنسبة لصفحات HTML، الرمز 204 خطأ. تقول وثائق Google إن Googlebot يُعلم مرحلة الفهرسة بأنه لم يستلم أي محتوى، وقد يبلّغ Search Console عن الرابط كـ Soft 404 في تقرير فهرسة الصفحات. وبالنسبة لـ Google فالصفحة فارغة، فلن تحتل مرتبة. وهذه طرق حدوثه:
- متحكّم (controller) لا يعيد شيئًا. فـ ASP.NET Core مثلًا يحوّل النتيجة
nullمن إجراء API إلى 204. - مسار أو middleware ينهي الرد قبل أن يُعرض القالب.
- قاعدة في CDN أو على الحافة (edge) كُتبت لمسار beacon فتطابق صفحات حقيقية أيضًا.
كيف تصلحه وتتحقق منه
اجعل مسارات الصفحات تعرض قالبًا بالرمز 200 OK دائمًا، أو تعيد 404 عندما لا يوجد العنصر، ولا تعد أبدًا نجاحًا فارغًا. افحص الروابط المهمة بـ أداة فحص حالة HTTP، واستخدم أداة فحص ترويسات HTTP لمعرفة أي طبقة هي التي ردّت. وهذا مثال على 204 صحيح في طلب CORS تمهيدي:
OPTIONS /api/v1/cart HTTP/1.1
Host: api.example.com
Origin: https://www.example.com
Access-Control-Request-Method: PATCH
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://www.example.com
Access-Control-Allow-Methods: GET, POST, PATCH
Access-Control-Max-Age: 600 الأسئلة الشائعة
هل 204 No Content خطأ؟
لا، هو رمز نجاح. يعني فقط أنه لا يوجد ما يُعاد، وهذا طبيعي في كثير من تحديثات API وعمليات الحذف والطلبات التمهيدية.
لماذا يعرض Search Console صفحة Soft 404 لصفحة تعيد 204؟
تتعامل Google مع 204 على أنه «لم يصل محتوى». والصفحة بلا محتوى لا يمكن فهرستها، فقد يبلّغ Search Console عنها كـ Soft 404. اجعل الصفحة تعيد 200 مع HTML الخاص بها.
هل يجب أن يعيد طلب DELETE الرمز 204 أم 200؟
كلاهما مقبول. استخدم 204 عندما لا يوجد ما يفيد إعادته، و200 عندما ترسل تأكيدًا أو العنصر المحذوف.