blob: 4bb9a606b6271a031fc29ef387df7df4199b0d33 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
---
title: 412 Precondition Failed
slug: Web/HTTP/Status/412
tags:
- HTTP
- Reference
- エラー
- ステータスコード
- リファレンス
translation_of: Web/HTTP/Status/412
---
<div>{{HTTPSidebar}}</div>
<p>HyperText Transfer Protocol (HTTP) <code><strong>412 Precondition Failed</strong></code> クライアントエラーレスポンスコードは、ターゲットリソースへのアクセスが拒否されたことを示します。これは、 {{HTTPHeader("If-Unmodified-Since")}} または {{HTTPHeader("If-None-Match")}} ヘッダーで定義された条件が満たされていない場合に、 {{HTTPMethod("GET")}} もしくは {{HTTPMethod("HEAD")}} 以外のメソッドの条件付きリクエストで発生します。その場合、リクエスト (通常はリソースのアップロードまたは変更) を行うことができず、このエラーレスポンスが返されます。</p>
<h2 id="Status" name="Status">ステータス</h2>
<pre class="syntaxbox">412 Precondition Failed</pre>
<h2 id="Examples" name="Examples">例</h2>
<pre><code>ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
ETag: W/"0815"</code></pre>
<h3 id="Avoiding_mid-air_collisions" name="Avoiding_mid-air_collisions">空中衝突の防止</h3>
<p><code>ETag</code> と {{HTTPHeader("If-Match")}} の各ヘッダーを活用することで、編集の空中衝突を検出することができます。</p>
<p>例えば、 MDN を編集しているとき、現在の Wiki の内容がハッシュ化され、レスポンスの <code>Etag</code> に入ります。</p>
<pre><code>ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"</code></pre>
<p>Wiki ページへの編集を保存する (データを投稿する) 際に、 {{HTTPMethod("POST")}} リクエストに {{HTTPHeader("If-Match")}} ヘッダーを含み、その中で新鮮さをチェックするための <code>ETag</code> の値を含みます。</p>
<pre><code>If-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"</code></pre>
<p>ハッシュが一致しない場合、その間で文書が編集されたことを意味するので、 {{HTTPStatus("412")}} <code>Precondition Failed</code> エラーを発生させます。</p>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
<th scope="col">題名</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{RFC("7232", "412 Precondition Failed" , "4.2")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
<p>以下に示す情報は、 MDN の GitHub から取得したものです。 (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p>
<p>{{Compat("http.status.412")}}</p>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
<li>{{HTTPStatus("304")}}</li>
<li>{{HTTPHeader("If-Unmodified-Since")}}</li>
<li>{{HTTPHeader("If-None-Match")}}</li>
<li>{{HTTPStatus("428")}}</li>
</ul>
|