DevToolPal
繁
4xx 用戶端錯誤

412 Precondition Failed

先決條件失敗

意義

請求標頭中的先決條件(如 If-Match 或 If-Unmodified-Since)判定為假,因此伺服器沒有套用此請求。

常見原因

  • 資源已被他人更新(ETag 已變更)
  • If-Match 使用了過時的快取 ETag
  • 條件式上傳時儲存空間已有較新的物件

解決方法

用戶端或訪客

重新 GET 資源取得目前的 ETag,重新套用變更後再送出。

網站或 API 的維護者

回傳目前的 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:你必須提供先決條件。