412 Precondition Failed 表示要求標頭中有一個或多個條件的評估結果為不成立。這是 If-Match 或 If-Unmodified-Since 失敗的結果,或是在 GET 與 HEAD 以外的方法上 If-None-Match 失敗的結果。伺服器沒有執行所要求的操作。
它的主要用途是防止更新遺失(樂觀並行控制)。用戶端讀取資源及其 ETag,編輯後再以 If-Match 搭配該 ETag 送出變更。如果在這段期間有其他人修改了資源,ETag 就不再相符,伺服器會回應 412,而不是覆寫別人的變更。它也會搭配 If-None-Match: * 使用,只在資源尚不存在時才建立資源。
對於 GET 與 HEAD,If-None-Match 或 If-Modified-Since 不成立時,產生的是 304 Not Modified,而不是 412。
回應範例
HTTP
HTTP/1.1 412 Precondition Failed
Date: Fri, 06 Nov 2026 10:15:32 GMT
ETag: "v8"
Content-Type: application/json
Content-Length: 52
{"error":"If-Match does not match the current ETag"} SEO 與重新導向檢查
常見原因與使用情境
- 資源在讀取後遭到修改,因此編輯被拒絕(ETag 不符)。
If-None-Match: *防止既有檔案遭到覆寫。- 雲端儲存或 CDN API 收到帶有過時 ETag 的條件式要求。