DevToolPal
ع
4xx أخطاء العميل

412 Precondition Failed

فشل الشرط المسبق

ماذا يعني

شرط مسبق في ترويسات الطلب، مثل If-Match أو If-Unmodified-Since، كانت نتيجته خاطئة، فلم يطبّق الخادم الطلب.

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

  • حدّث شخص آخر المورد (تغير الـ ETag)
  • استُخدم ETag قديم مخزن مؤقتًا في If-Match
  • رفع مشروط إلى تخزين يحتوي على كائن أحدث

طريقة الإصلاح

إن كنت العميل أو الزائر

اجلب المورد مجددًا بـ GET للحصول على الـ ETag الحالي، وأعد تطبيق تغييراتك، ثم أرسل مرة أخرى.

إن كنت مسؤولًا عن الموقع أو الواجهة البرمجية

أعد الـ ETag الحالي واجعل فحص الشرط ذريًا مع عملية الكتابة.

مثال على الاستجابة

HTTP/1.1
HTTP/1.1 412 Precondition Failed
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "v8"
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Precondition Failed",
  "status": 412,
  "detail": "If-Match \"v7\" does not match the current version \"v8\"."
}

المواصفة

RFC 9110 §15.5.13

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

› ما التحكم المتفائل في التزامن؟

يرسل العملاء If-Match مع الـ ETag الذي قرأوه؛ ويرفض الخادم الكتابة بـ 412 إذا تغير المورد في الأثناء.

› 412 أم 428؟

412: فشل شرطك المسبق. 428: يجب عليك إرسال شرط مسبق أصلًا.