428 Precondition Required(RFC 6585)は、オリジンサーバーがリクエストを条件付きにするよう求めていることを示します。これは「更新の消失」問題を防ぐためのものです。クライアントがリソースを読み取って変更し、PUT で書き戻すと、その間に誰かが加えた変更を上書きしてしまうという問題です。
サーバーは条件なしの書き込みに 428 で応答することで、読み取った ETag を If-Match に付けて送るようクライアントに強制します。そうすれば、リソースが変更されていた場合、条件付きリクエストはデータを黙って上書きするのではなく、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 と通信している場合。