Content-Location header
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
The HTTPContent-Locationrepresentation header indicates an alternate location for the returned data.It's main use is to indicate the URL of a resource transmitted as the result ofcontent negotiation.
TheContent-Location header is different from theLocation header.Content-Location indicates the direct URL to access the resource whencontent negotiation has happened, allowing the client to bypass future content negotiation for this resource.Location, on the other hand, indicates either the target of a3XX redirection or the URL of a newly created resource in a201 Created response.
| Header type | Representation header |
|---|---|
| Forbidden request header | No |
In this article
Syntax
Content-Location: <url>Directives
Examples
>Requesting data from a server in different formats
Let's say a site's API can return data inJSON,XML, orCSV formats. If the URL for a particular documentis athttps://example.com/documents/foo, the site could return differentURLs forContent-Location depending on the request'sAccept header:
| Request header | Response header |
|---|---|
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 |
These URLs are examples — the site could serve the different filetypes with any URLpatterns it wishes, such as aquery string parameter:/documents/foo?format=json,/documents/foo?format=xml, and so on.
Then the client could remember that the JSON version is available at that particularURL, skipping content negotiation the next time it requests that document.
The server could also consider othercontent negotiation headers, suchasAccept-Language.
Indicating the URL of a transaction's result
Say you have a<form> for sendingmoney to another user of a site.
<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>When the form is submitted, the site generates a receipt for the transaction. Theserver could useContent-Location to indicate that receipt's URL for futureaccess.
HTTP/1.1 200 OKContent-Type: text/html; charset=utf-8Content-Location: /my-receipts/38<!doctype html>(Lots of HTML…)<p>You sent $38.00 to ExampleUser.</p>(Lots more HTML…)Specifications
| Specification |
|---|
| HTTP Semantics> # field.content-location> |