इसका मतलब
अनुरोध हेडर की कोई पूर्व शर्त, जैसे If-Match या If-Unmodified-Since, गलत निकली, इसलिए सर्वर ने अनुरोध लागू नहीं किया।
आम कारण
- किसी और ने रिसोर्स अपडेट किया (ETag बदल गया)
- If-Match में पुराना कैश किया ETag इस्तेमाल हुआ
- ऐसे स्टोरेज पर सशर्त अपलोड जिसमें पहले से नया ऑब्जेक्ट है
कैसे ठीक करें
अगर आप क्लाइंट या विज़िटर हैं
मौजूदा ETag पाने के लिए रिसोर्स फिर से GET करें, अपने बदलाव दोबारा लागू करें और फिर भेजें।
अगर आप साइट या API चलाते हैं
मौजूदा ETag लौटाएँ और शर्त की जाँच को लिखने के साथ atomic बनाएँ।
उदाहरण रिस्पॉन्स
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\"."
} स्पेसिफ़िकेशन
अक्सर पूछे जाने वाले सवाल
› ऑप्टिमिस्टिक कॉन्करेंसी कंट्रोल क्या है?
क्लाइंट पढ़े गए ETag के साथ If-Match भेजते हैं; अगर बीच में रिसोर्स बदल गया तो सर्वर 412 के साथ लिखना अस्वीकार करता है।
› 412 या 428?
412: आपकी पूर्व शर्त विफल रही। 428: आपको कोई पूर्व शर्त भेजनी ही होगी।