Content-Location

Content-Location ヘッダーは、返されるデータの代替場所を示します。主な用途はコンテンツネゴシエーションの結果として送信されたリソースの URL を示すことです。

LocationContent-Location は異なります。Location はリダイレクトの URL を示し、Content-Location は今後のコンテンツネゴシエーションなしでリソースへのアクセスに使用する直接 URL を示します。 Location はレスポンスに関連付けられたヘッダーで、 Content-Location は返されたデータに関連付けられます。この区別はがないと抽象的に見えるかもしれません。

ヘッダー種別 エンティティヘッダー
禁止ヘッダー名 いいえ

構文

Content-Location: <url>

ディレクティブ

<url>
(リクエスト URL に対する) 相対 URL または絶対 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 のような他のコンテンツネゴシエーションヘッダーを考慮することもできます。

新しい文書を指す (HTTP 201 Created)

サイトの API を通じて新しいブログ投稿を作成しているとします。

PUT /new/post
Host: example.com
Content-Type: text/markdown

# My first blog post!

I made this through `example.com`'s API. I hope it worked.

サイトは投稿が公開されたことを確認する一般的な成功メッセージを返します。サーバーは Content-Location を使用して新しい投稿がどこにあるかを指定します。

HTTP/1.1 201 Created
Content-Type: text/plain; charset=utf-8
Content-Location: /my-first-blog-post

✅ Success!

トランザクションの結果の URL を示す

サイトの別のユーザーに送金するための <form> があるとします。

<form action="/send-payment" method="post">
  <p>
    <label>Who do you want to send the money to?
      <input type="text" name="recipient">
    </label>
  </p>

  <p>
    <label>How much?
      <input type="number" name="amount">
    </label>
  </p>

  <button type="submit">Send Money</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…)

仕様書

仕様書 題名
RFC 7231, セクション 3.1.4.2: Content-Location Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content

ブラウザーの互換性

BCD tables only load in the browser

関連情報