Content-Location ヘッダー
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
HTTP の Content-Location 表現ヘッダーは、返されるデータの代替場所を示します。
主な用途は、コンテンツネゴシエーションの結果として送信されたリソースの URL を示すことです。
Content-Location は Location とは異なります。
Content-Location は、コンテンツネゴシエーションが発生した際に、リソースにアクセスするための直接 URL を示すもので、これによりクライアントはこのリソースに対する今後のコンテンツネゴシエーションを省略することができます。
一方、Location は、3XX リダイレクトの対象、または 201 Created レスポンスで新規に作成されたリソースの URL のどちらかを示します。
| ヘッダー種別 | 表現ヘッダー |
|---|---|
| 禁止リクエストヘッダー | いいえ |
構文
Content-Location: <url>
ディレクティブ
例
>サーバーからのデータのリクエストを様々な形式で行う
たとえば、サイトの API が JSON, XML, または CSV 形式でデータを返すとします。特定の文書の URL が https://example.com/documents/foo である場合、サイトはリクエストの Accept ヘッダーに応じて Content-Location 用に異なる URL を返すことができます。
| リクエストヘッダー | レスポンスヘッダー |
|---|---|
Accept: application/json, text/json |
Content-Location: /documents/foo.json |
Accept: application/xml, text/xml |
Content-Location: /documents/foo.xml |
Accept: text/plain, text/* |
Content-Location: /documents/foo.txt |
これらの URL は例です。サイトは、クエリー文字列引数、例えば /documents/foo?format=json、/documents/foo?format=xml など、任意の URL パターンでさまざまなファイル形式を提供することができます。
その後クライアントはその特定の URL で JSON バージョンが利用可能であることを覚えて、次に文書を要求するときにコンテンツのネゴシエーションをスキップします。
サーバーは Accept-Language のような他のコンテンツネゴシエーションヘッダーを考慮することもあります。
トランザクションの結果の URL を示す
サイトの別のユーザーに送金するための <form> があるとします。
<form action="/send-payment" method="post">
<p>
<label>
送金したい宛先は?
<input type="text" name="recipient" />
</label>
</p>
<p>
<label>
金額は?
<input type="number" name="amount" />
</label>
</p>
<button type="submit">送金する</button>
</form>
フォームが送信されると、サイトは取引の領収書を生成します。サーバーは Content-Location を使用して、将来のアクセスのために領収書の URL を示すことができます。
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Location: /my-receipts/38
<!doctype html>
(Lots of HTML…)
<p>You sent $38.00 to ExampleUser.</p>
(Lots more HTML…)
仕様書
| 仕様書 |
|---|
| HTTP Semantics> # field.content-location> |