Artinya
Prasyarat di header permintaan, seperti If-Match atau If-Unmodified-Since, bernilai salah, sehingga server tidak menerapkan permintaan.
Penyebab umum
- Orang lain memperbarui resource (ETag berubah)
- ETag cache yang usang dipakai di If-Match
- Unggahan bersyarat ke storage yang sudah punya objek lebih baru
Cara memperbaiki
Sebagai klien atau pengunjung
Lakukan GET ulang untuk mendapatkan ETag terkini, terapkan ulang perubahan Anda, lalu kirim lagi.
Sebagai pengelola situs atau API
Kembalikan ETag terkini dan jadikan pengecekan kondisi atomik dengan proses tulis.
Contoh respons
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\"."
} Spesifikasi
FAQ
› Apa itu optimistic concurrency control?
Klien mengirim If-Match dengan ETag yang dibacanya; server menolak penulisan dengan 412 jika resource berubah di sela waktu itu.
› 412 atau 428?
412: prasyarat Anda gagal. 428: Anda wajib mengirim prasyarat.