TrueURL
TrueURL

選單

412 先決條件失敗

要求標頭中的條件(例如 If-Match 或 If-Unmodified-Since)不成立,因此伺服器沒有套用變更。

原因短語
Precondition Failed
是否為重新導向
否
預設可快取
否

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 與重新導向檢查

412 出現在 API 與 WebDAV 的條件式寫入中,與檢索無關;爬蟲的條件式 GET 要求只會得到 304 或 200。如果重新導向檢查顯示 412,請檢查您以自訂要求標頭加入的 If-* 標頭。

常見原因與使用情境

  • 資源在讀取後遭到修改,因此編輯被拒絕(ETag 不符)。
  • If-None-Match: * 防止既有檔案遭到覆寫。
  • 雲端儲存或 CDN API 收到帶有過時 ETag 的條件式要求。

網址重新導向檢查

使用免費的 TrueURL 重新導向檢查工具,逐一查看網址在每個躍點回傳的狀態碼。