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 は何が返されたかを記述します。