Pack Camo

رموز حالة HTTP

كل رموز حالة HTTP، ومعانيها ومتى تُستخدم، مع إمكانية البحث.

كل شيء يعمل محليًا — لا يُرفع أي شيء.

2xx · نجاح

200 OK

مسجّل لدى IANAقابل للتخزين المؤقت افتراضيًا

ماذا يعني

The request succeeded. The body holds the result: the resource for GET, the outcome of the action for POST.

متى يُستخدم

The default success response. Prefer 201 when something was created and 204 when there is nothing to return.

مُعرَّف في

RFC 9110 §15.3.1(يُفتح في علامة تبويب جديدة)

سطر الحالة

HTTP/1.1 200 OK

يُرسل HTTP/2 وHTTP/3 الرقم فقط، في الترويسة الزائفة :status؛ أما عبارة السبب (reason phrase) فلا توجد إلا في HTTP/1.x.

كل رمز حالة HTTP: ماذا يعني ومتى تُرسله

هذا مرجع قابل للبحث لجميع رموز حالة استجابة HTTP القياسية في سجل IANA، من <code>100 Continue</code> إلى <code>511 Network Authentication Required</code>. يأتي كل رمز مع شرح بلغة بسيطة، ونصيحة حول متى يجب أن يُرسله الخادم أو الـ API، وترويسات الاستجابة المرافقة له، ورابط إلى الـ RFC الذي يعرّفه. كما تتضمن القائمة الرموز غير الرسمية الشائعة — <code>499</code> من nginx و<code>419</code> من Laravel و<code>520</code>–<code>526</code> من Cloudflare — مع تمييزها بوضوح. ابحث بالرقم أو الاسم أو بكلمة مفتاحية مثل "redirect" أو "rate limit".

كيف تبحث عن رمز حالة

  1. 1اكتب رمزًا (404) أو بدايته (40) أو فئة (4xx) أو اسمًا (teapot) أو كلمة مفتاحية (rate limit أو cache أو Retry-After).
  2. 2اقصر القائمة على فئة واحدة باستخدام مرشحات 1xx–5xx، أو أخفِ الرموز غير الرسمية.
  3. 3اختر رمزًا — بالفأرة أو بمفاتيح الأسهم — لترى معناه ومتى يُستخدم والترويسات المرتبطة به والمواصفة التي تعرّفه.
  4. 4انسخ الرمز أو سطر الحالة كاملًا، أو شارك رابط الصفحة: فهو ينتهي بـ #404 ويفتح مباشرةً على ذلك الرمز.

الفئات الخمس لرموز الحالة

العميل الذي يتلقى رمزًا لا يعرفه يتعامل معه على أنه الرمز x00 من فئته، فيُعامَل رمز 499 غير المعروف مثل 400، ورمز 299 غير المعروف مثل 200. ولهذا يمكن إضافة رموز جديدة دون أن تتعطل البرامج القديمة.

1xx معلوماتية
استجابات مؤقتة تُرسل قبل الاستجابة النهائية: 100 Continue، و101 Switching Protocols لاتصالات WebSocket، و103 Early Hints للتحميل المسبق.
2xx نجاح
نجح الطلب. 200 OK هو الرمز الافتراضي؛ أما 201 Created و204 No Content فيصفان ما حدث بدقة أكبر.
3xx إعادة توجيه
على العميل أن يبحث في مكان آخر، عادةً في الرابط الموجود في ترويسة Location — أو في حالة 304 Not Modified، أن يستخدم نسخته المخزنة مؤقتًا.
4xx خطأ من العميل
الطلب كان خاطئًا: مشوّه أو بلا مصادقة أو ممنوع أو لشيء غير موجود أو متكرر أكثر من اللازم. إعادة المحاولة دون تغيير لن تفيد.
5xx خطأ من الخادم
ربما كان الطلب سليمًا، لكن الخادم أو شيئًا خلفه تعطّل. غالبًا ما تكون هذه الأخطاء مؤقتة وتستحق إعادة المحاولة مع زيادة فترة الانتظار تدريجيًا (back-off).

اختيار الرمز المناسب لواجهة API

تحتاج معظم واجهات API إلى نحو اثني عشر رمزًا فقط. للنجاح: 200 مع محتوى، و201 مع ترويسة Location عند إنشاء شيء ما، و202 عندما يُنفَّذ العمل لاحقًا، و204 عندما لا يوجد ما يُعاد. لأخطاء العميل: 400 للطلبات المشوّهة، و422 للبيانات السليمة الصياغة التي تفشل في التحقق، و401 عندما تكون بيانات الاعتماد مفقودة أو غير صالحة، و403 عندما تكون صالحة لكنها غير كافية، و404 للموارد غير المعروفة، و409 للتعارضات مثل بريد إلكتروني مكرر، و429 لتحديد معدل الطلبات. لأخطاء الخادم: 500 للأخطاء البرمجية، و502 و503 و504 للأعطال في البنية التحتية الوسيطة.

أيًّا كان الرمز، أعِد محتوى يشرحه. يمنح RFC 9457 "Problem Details" (application/problem+json) هذا المحتوى شكلًا قياسيًا بالحقول type وtitle وstatus وdetail. لا تُعِد أبدًا 200 مع خطأ داخل المحتوى: فالتخزين المؤقت وأنظمة المراقبة ومنطق إعادة المحاولة كلها تقرأ رمز الحالة لا ملف JSON الخاص بك. لتنسيق هذا المحتوى، استخدم منسق JSON.

رموز يُخلط بينها كثيرًا

401 vs 403
401 Unauthorized تعني "لا أعرف من أنت": سجّل الدخول أو أرسل رمز وصول صالحًا. 403 Forbidden تعني "أعرف من أنت، وغير مسموح لك بهذا".
301 vs 302 vs 307 vs 308
301 و308 دائمان وينقلان ترتيب البحث إلى الرابط الجديد؛ أما 302 و307 فمؤقتان. يضمن 307 و308 بقاء الطريقة والمحتوى كما هما، بينما تحوّل المتصفحات POST إلى GET مع 301 و302.
400 vs 422
400 للطلبات التي لا يستطيع الخادم تحليلها إطلاقًا؛ و422 لملف JSON صالح يخالف محتواه القواعد، مثل حقل إلزامي مفقود.
404 vs 410
404 تقول إنه لا يوجد شيء هنا الآن؛ و410 تقول إنه كان هنا شيء وحُذف عمدًا، فتُزيله محركات البحث بسرعة أكبر.
502 vs 504
كلاهما يأتي من وكيل (proxy) أو موازن أحمال. 502 تعني أن الخادم الخلفي (upstream) ردّ بشيء غير صالح أو أغلق الاتصال؛ و504 تعني أنه لم يرد في الوقت المحدد.
500 vs 503
500 عطل غير متوقع، وغالبًا خطأ برمجي. أما 503 فحالة مؤقتة معروفة — صيانة أو ضغط زائد — ويجب أن تُرفق بترويسة Retry-After.

رموز الحالة وتحسين محركات البحث (SEO)

تقرأ محركات البحث رموز الحالة بعناية. استخدم 301 أو 308 عندما تنتقل صفحة نهائيًا، لينتقل ترتيبها معها؛ أما 302 فيخبرها بأن الرابط القديم هو الذي يبقى مفهرسًا. قدّم 404 أو 410 حقيقيًا للصفحات المفقودة — فصفحة "غير موجود" التي تُعيد 200 هي "soft 404" وتُهدر ميزانية الزحف. أثناء الصيانة، أعِد 503 مع Retry-After حتى لا تُحذف الصفحات من الفهرس. حدّد ما يمكن لزواحف البحث زيارته باستخدام مولّد robots.txt.

يمكن للمتصفحات وشبكات CDN تخزين الاستجابات ذات الرموز 200 و203 و204 و206 و300 و301 و308 و404 و405 و410 و414 و451 و501 مؤقتًا حتى دون ترويسات صلاحية صريحة، لذا قد يبقى 404 أو 301 غير مقصود لفترة طويلة؛ اضبط Cache-Control لهذه الرموز عن قصد.

رموز غير رسمية ستراها في السجلات

بعض الرموز غير موجودة في سجل IANA لكنها شائعة عمليًا. يسجّل nginx الرمز 499 عندما يقطع العميل الاتصال قبل وصول الاستجابة، و444 عندما يغلق nginx الاتصال دون رد. ويُعيد Cloudflare الرموز 520–526 عندما لا يحصل على استجابة سليمة من الخادم الأصلي (origin): 521 تعني أن الخادم الأصلي رفض الاتصال، و522 أن المهلة انتهت، و524 أنه استغرق أكثر من 100 ثانية للرد، و525/526 أن اتصال TLS بالخادم الأصلي فشل. ويُرسل Laravel الرمز 419 عند انتهاء صلاحية رمز CSRF. هذه الرموز مُعلَّمة بأنها "غير رسمية" في القائمة، ويمكن إخفاؤها.

الأسئلة الشائعة

ما هو رمز حالة HTTP؟
رقم من ثلاث خانات في بداية كل استجابة HTTP يخبر العميل بنتيجة الطلب. يحدد الرقم الأول الفئة: 1xx معلوماتية، و2xx نجاح، و3xx إعادة توجيه، و4xx خطأ من العميل، و5xx خطأ من الخادم.
ما الفرق بين 401 و403؟
401 Unauthorized تعني أن الطلب لا يحمل بيانات اعتماد صالحة، لذا قد يفيد تسجيل الدخول. 403 Forbidden تعني أن الخادم يعرف من أنت لكن ليست لديك صلاحية، لذا لن يفيد تسجيل الدخول مجددًا.
هل أستخدم 301 أم 302 لإعادة التوجيه؟
استخدم 301 (أو 308) عندما يكون الانتقال دائمًا، مثل تغيير الرابط أو نقل النطاق؛ إذ تنقل محركات البحث ترتيب الصفحة إلى العنوان الجديد. واستخدم 302 (أو 307) عندما سيعود الرابط الأصلي للاستخدام.
ماذا يعني 429 Too Many Requests؟
العميل تجاوز الحد المسموح من الطلبات. انتظر قبل إعادة المحاولة: ترويسة Retry-After، إن وُجدت، تحدد عدد الثواني أو الوقت الذي تنتظر حتى يحين. ويجب أن يزيد العميل فترة الانتظار أُسّيًا بدل إعادة المحاولة فورًا.
ما سبب خطأ 502 Bad Gateway؟
تلقّى وكيل أو موازن أحمال أو CDN أمام الموقع استجابة غير صالحة من الخادم الذي خلفه — عادةً لأن التطبيق تعطّل أو أُعيد تشغيله أو أغلق الاتصال. الحل على جانب الخادم، في سجلات التطبيق الخلفي (upstream).
ما هو رمز الحالة 499؟
رمز خاص بـ nginx يُسجَّل عندما يغلق العميل الاتصال قبل أن يتمكن nginx من إرسال الاستجابة. لا يصل هذا الرمز إلى العميل أبدًا. وكثرة رموز 499 تعني عادةً أن الخادم الخلفي بطيء جدًا وأن العملاء يستسلمون.
هل 418 I'm a teapot رمز حالة حقيقي؟
بدأ كمزحة كذبة أبريل في RFC 2324 (عام 1998). وهو غير مخصص للاستخدام الفعلي، لكن لأن برامج كثيرة تطبّقه، يحجز RFC 9110 الرمز 418 حتى لا يُخصَّص لأي شيء آخر أبدًا.
كم عدد رموز حالة HTTP؟
يعرّف سجل IANA نحو 63 رمزًا، منها بعض الرموز المحجوزة أو المهملة مثل 306 و305. والرموز الممكنة تمتد من 100 إلى 599، ويتعامل العملاء مع أي رمز غير معروف على أنه الرمز x00 من فئته.