428 Precondition Required(RFC 6585)表示原始伺服器要求這個要求必須是條件式的。它用來防止「更新遺失」問題:用戶端讀取資源、加以修改,再以 PUT 寫回,結果覆寫了其他人在這段期間所做的變更。
伺服器以 428 回應非條件式的寫入,強制用戶端傳送 If-Match,並附上它讀取到的 ETag。如果資源已經變更,條件式要求就會以 412 Precondition Failed 失敗,而不會悄悄覆寫資料。回應中應說明如何成功地重新送出要求。
回應範例
HTTP
HTTP/1.1 428 Precondition Required
Date: Fri, 06 Nov 2026 10:15:32 GMT
Content-Type: application/json
Content-Length: 71
{"error":"Send If-Match with the current ETag to update this resource"} SEO 與重新導向檢查
對 SEO 沒有影響:428 適用於 API 與協作編輯中的寫入要求,爬蟲的 GET 要求不會觸發它。
常見原因與使用情境
- API 要求
PUT、PATCH或DELETE必須帶有If-Match,但用戶端沒有傳送。 - 協作文件服務強制執行樂觀鎖定。
- 不支援 ETag 的用戶端程式庫與這類 API 互動。