HTTPQUERY
日本語

Content-Location

使い方

Content-Location ヘッダーは、レスポンスボディで配信されたリソースの特定の表現を識別する URL を提供します。クライアントを別のリソースへリダイレクトさせる Location ヘッダーとは異なり、Content-Location はコンテンツネゴシエーションの結果としてサーバーが選んだまさにその表現を指し示します。

サーバーが同じリソースについて複数の表現(異なる言語、フォーマット、エンコーディング)をサポートしている場合、Content-Location ヘッダーはどのバリアントが選択されたかをクライアントに伝えます。この区別は、ネゴシエート結果のキャッシュやブックマークにおいて重要になります。

値は絶対 URL か、リクエスト URL を基準に解決される相対参照のいずれかです。実際には相対参照のほうが一般的です。

Content-Location は PUT や POST リクエストへのレスポンスにも現れます。POST が成功して新しいリソースが作成された場合、レスポンスボディが作成されたリソースそのものを表していれば、サーバーは新規作成された項目の URL を Content-Location に設定します。

例

クライアントが /report のドキュメントを要求し、サーバーはコンテンツネゴシエーションによって英語版の PDF バリアントを選択します。Content-Location ヘッダーは、選ばれた表現の具体的な URL を示します。

GET /report HTTP/1.1
Host: example.re
Accept: application/pdf
Accept-Language: en
HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Language: en
Content-Location: /report/en.pdf

POST リクエストによって新しいリソースが作成された後、サーバーは作成された項目をレスポンスボディで返します。Content-Location ヘッダーは、その新しいリソースの正規 URL を指します。

HTTP/1.1 201 Created
Content-Type: application/json
Content-Location: /orders/12345

注意

Location ヘッダーはクライアントを別のリソースへリダイレクトし、リクエスト対象を変更します。Content-Location は、すでにレスポンスボディで配信された表現の具体的な URL を識別します。Location は新しいリクエストを引き起こします。Content-Location は何が返されたかを記述します。