Loading...

الأساسيات · قراءة 7 دقائق

رموز حالة HTTP: اقرأها كـ"من رفض، وأين"

كل مرجع يسرد معنى الرموز. لا يكاد أي منها يقول أي جهاز يصدرها — وعلى موقع خلف CDN، هذا هو السؤال الذي يختصر التصحيح من بعد ظهر كامل إلى دقيقة واحدة. هذه هي القائمة من وجهة نظر الوسيط (proxy).

آخر تحديث

رموز حالة HTTP: اقرأها كـ"من رفض، وأين"

الفئات، باختصار

2xx — نجح. 200 OK هي الإجابة العادية. 204 No Content طلب ناجح بلا شيء يُعاد، شائع في واجهات API. 206 Partial Content طلب نطاق، وهذا ما يجعل البحث داخل الفيديو والتنزيلات القابلة للاستئناف يعملان.

3xx — انظر إلى مكان آخر. 301 دائم وينقل إشارات الترتيب؛ 302 مؤقت ولا ينقلها. 304 Not Modified هو الهادئ: العميل يملك أصلًا نسخة صالحة، فلا يُرسَل الجسم إطلاقًا. الموقع السليم يقدّم كثيرًا من 304.

4xx — الطلب رُفض. 400 مشوَّه، و401 يحتاج بيانات اعتماد، و403 رفض متعمَّد، و404 غير موجود، و410 مفقود عمدًا، و429 طلبات كثيرة جدًا.

5xx — جانب الخادم فشل. 500 خطأ غير معالَج، و502 محادثة معطوبة مع الجهاز الخلفي، و503 رفض مؤقت، و504 مهلة انتظار انتهت للجهاز الخلفي.

أي محطة أنتجت الرمز

الطلب خلف CDN يمر عبر ثلاثة أماكن على الأقل يمكنها الإجابة عنه: الحافة، وخادم ويب أصلك، وتطبيقك. كل واحد يمكن أن يُنتج رموزًا لا يستطيع الآخران إنتاجها.

الحافة وحدها يمكن أن تُنتج: إصابة تخزين مؤقت تُقدَّم بينما الأصل معطّل، و502 أو 504 عن أصلك، و403 من قاعدة WAF أو حظر جغرافي، و503 تقول إنه لا خدمة مُعدَّة لاسم المضيف.

خادم ويب أصلك وحده يُنتج: 403 من أذونات الملفات أو قاعدة حظر، و404 لمسار غير موجود على القرص، و413 لجسم أكبر مما يقبله.

تطبيقك وحده يُنتج: 401 و403 بناءً على من سجّل الدخول، و422 للتحقق من الصحة، و500 من استثناء غير معالَج.

فالسؤال التشخيصي الأول ليس "ماذا يعني 502" بل "هل وصل هذا الطلب إلى أصلي أصلًا". إن لم يظهر في سجل وصول الأصل، فلن يؤثر فيه أي تغيير تجريه على الأصل.

قراءة الترويسات لمعرفة المحطة

الاستجابة تخبرك من تولّى الأمر، إن نظرت إلى الترويسات بدل الصفحة.

curl -sI https://example.com/

ترويسة حالة تخزين مؤقت — على cdn.com.tr، X-Proxy-Cache-MT بقيمة HIT أو MISS — تعني أن الحافة عالجت الطلب. HIT تعني أن الأصل لم يُستشَر إطلاقًا، وهذا مفيد معرفته حين تختبر تغييرًا وما زلت ترى السلوك القديم.

فخّان يعيشان هنا. الأول: curl -I يرسل طلب HEAD، وبعض الخوادم والبرمجيات الوسيطة تتصرف بشكل مختلف مع HEAD عنه مع GET، فترويسة تظهر مع -I قد تغيب مع GET حقيقي والعكس صحيح. حين يهم الأمر، استخدم curl -sD - -o /dev/null مع GET عادي. الثاني: استجابة خطأ مخزَّنة مؤقتًا ستستمر في التقديم بعد إصلاحك السبب. إن لم يتغيّر الرمز بعد الإصلاح، فرّغ المسار قبل أن تواصل التصحيح.

الرموز التي تستحق إعدادًا مقصودًا

301 مقابل 302. استخدم 301 حين يكون النقل دائمًا — فهو يدمج ترتيب الرابط القديم في الجديد. أما 302 فيُبقي الرابط القديم هو الأساسي (canonical)، وهذا ما تريده لإعادة توجيه حملة مؤقتة لا ما تريده بعد إعادة هيكلة موقع. عمليات إعادة التوجيه تُخزَّن مؤقتًا عند الحافة، فالخاطئة منها تعيش أطول من عملية النشر التي أدخلتها.

404 مقابل 410. كلاهما يقول "ليس هنا". أما 410 فيقول "ولن يعود"، ما يجعل الرابط يُسقَط من الفهرس أسرع. لصفحات المنتجات المتقاعدة، 410 هو الرمز الصادق.

503 مع Retry-After. أثناء الصيانة، هذا هو الثنائي الذي يُبقي الزواحف صبورة. صفحة صيانة تُقدَّم برمز 200 تخبرها أن إشعار صيانتك هو محتواك.

429 لتحديد معدل الطلبات. أصدق من 503 حين يتعلق الرفض بسرعة طلب هذا العميل تحديدًا. ليست كل حزمة ترسله افتراضيًا — تحديد معدل الطلبات في nginx يُعيد 503 ما لم يُعدّ خلاف ذلك.

رموز الحالة التي ستقضي عليها وقتًا فعليًا

عمليًا، ثلاثة رموز تستحوذ على معظم وقت التصحيح على موقع خلف وسيط، ولكل منها دليله الخاص:

**502 Bad Gateway** — لم تستطع الحافة الحصول على إجابة صالحة من أصلك. أربعة أسباب: اتصال مرفوض، إغلاق مبكر، فشل مصافحة TLS، استجابة مشوَّهة.

**403 Forbidden** — شيء ما رفض عمدًا. خمس جهات محتملة تقرر: أصلك، أو قاعدة WAF، أو حظر حسب الدولة أو الشبكة، أو حماية Hotlink، أو قائمة IP. المعرّف المرجعي على صفحة الخطأ هو ما يحوّل التخمين إلى بحث.

**503 Service Unavailable** — رفض مؤقت: إثقال، أو صيانة، أو تحديد معدل طلبات، أو حافة لا أصل مُعدّ لديها لاسم المضيف ذاك.

أما الرابع، 504، فهو التوأم الزمني لـ 502 ومشمول في دليل 502، لأن التمييز بينهما هو معظم العمل.

الأسئلة الشائعة حول رموز حالة HTTP

أي رموز حالة تؤثر فعليًا في SEO؟

تلك التي تغيّر ما يُفهرَس: 301 تدمج رابطًا في وجهته، و302 لا تفعل، و404 و410 يزيلان رابطًا مع كون 410 أسرع، و5xx طويل الأمد يُسقط الصفحة في النهاية. أما 200 تُقدَّم على صفحة خطأ فهي الضارة بهدوء، لأن نص الخطأ يُفهرَس كمحتوى.

لماذا أحصل على رمز مختلف من curl عنه من متصفحي؟

الطلبات مختلفة. متصفحك يرسل ملفات تعريف ارتباط، وعامل مستخدم مختلفًا، وترويسة Accept؛ أما curl فعادةً لا يرسل أيًا منها. على موقع فيه WAF أو تجاوز بملف تعريف ارتباط لتسجيل الدخول، تلك الفروق تغيّر القرار. قارن المثيل بمثيله قبل أن تستنتج أي شيء.

هل 304 خطأ؟

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

ماذا تعني حالة 000 أو فارغة في المراقبة لدي؟

أنه لم تكن هناك استجابة HTTP لتُقرأ: DNS لم يُحلَّل، أو اتصال TCP فشل، أو TLS لم يتفاوض. إنها مشكلة اتصال لا مشكلة تطبيق، وتستحق التمييز عن 5xx في أي نظام تنبيه لديك.