412 Precondition Failed

HTTP の 412 Precondition Failedクライアントエラーレスポンスのステータスコードで、ターゲットリソースへのアクセスが拒否されたことを示します。 これは、条件付きリクエストGET または HEAD 以外のメソッドで行う際に、 If-Unmodified-Since または If-Match ヘッダーで定義された条件が満たされない場合に発生します。 その場合、リクエスト(通常はリソースのアップロードまたは変更)は実行されず、このエラーレスポンスが返されます。

ステータス

http
412 Precondition Failed

事前条件の失敗

http
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
ETag: W/"0815"

空中衝突の防止

ETagIf-Match の各ヘッダーを活用することで、編集の空中衝突を検出することができます。 例えば、ある Wiki ページを編集しているとき、現在の Wiki の内容がハッシュ化され、レスポンスの ETag に入ります。

http
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

Wiki ページへの編集を保存する(データを投稿する)際に、 POST リクエストに If-Match ヘッダーを含み、その中で新鮮さをチェックするための ETag の値を含みます。

http
If-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"

ハッシュが一致しない場合、その間で文書が編集されたことを意味するので、 412 Precondition Failed エラーを発生させます。

仕様書

Specification
HTTP Semantics
# status.412

関連情報