Content-Location header indicates an alternate
location for the returned data. The principal use is to indicate the URL of a resource
transmitted as the result of content
Content-Location are different.
Location indicates the URL of a redirect, while
Content-Location indicates the direct URL to use to access the resource,
without further content negotiation in the future.
Location is a header
associated with the response, while
Content-Location is associated with the
data returned. This distinction may seem abstract without examples.
|Header type||Representation header|
|Forbidden header name||no|
Let's say a site's API can return data in JSON, XML, or
CSV formats. If the URL for a particular document
https://example.com/documents/foo, the site could return different
Content-Location depending on the request's
|Request header||Response header|
These URLs are examples — the site could serve the different filetypes with any URL
patterns it wishes, such as a query string
/documents/foo?format=xml, and so on.
Then the client could remember that the JSON version is available at that particular URL, skipping content negotation the next time it requests that document.
Say you're creating a new blog post through a site's 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.
The site returns a generic success message confirming the post was published. The
server specifies where the new post is with
HTTP/1.1 201 Created Content-Type: text/plain; charset=utf-8 Content-Location: /my-first-blog-post ✅ Success!
Say you have a
<form> for sending
money 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. The
server could use
Content-Location to indicate that receipt's URL for future
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…)
|Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content (HTTP/1.1)|
BCD tables only load in the browser