Content-Location
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.
HTTP Content-Location
表示标头指定返回数据的备用地址。最主要的用途是用来指定要访问的资源经过内容协商后的结果的 URL。
Content-Location
标头和 Location
标头是不同的。Content-Location
表示在内容协商发生时访问资源的直接 URL,允许客户端绕过该资源未来的内容协商。相比之下,Location
则表示 3XX
重定向的目标或者 201 Created
响应中新创建的资源的 URL。
语法
Content-Location: <url>
指令
示例
请求数据的不同格式
假设,一个站点的 API 可以返回 JSON、XML 或 CSV 格式。如果某个文件的 URL 是 https://example.com/documents/foo
,站点可以根据请求的 Accept
标头返回不同的 Content-Location
:
请求标头 | 响应标头 |
---|---|
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 仅是例子,站点可以使用任何 URL 格式,比如查询字符串参数:/documents/foo?format=json
、/documents/foo?format=xml
等。
这样,客户端就能记住 JSON 版本在这个 URL。下次请求该文档时,就可以跳过内容协商。
服务器也可以考虑使用其他内容协商标头,例如 Accept-Language
。
表示交易结果的 URL
例如,某个站点上有一个 <form>
表单,用于转账给其他用户。
<form action="/send-payment" method="post">
<p>
<label>
你想把钱汇给谁?
<input type="text" name="recipient" />
</label>
</p>
<p>
<label>
多少金额?
<input type="number" name="amount" />
</label>
</p>
<button type="submit">汇款</button>
</form>
当此表单被提交时,站点生成此交易的收据。服务器可以使用 Content-Location
来表明收据的 URL 以供未来访问。
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Location: /my-receipts/38
<!doctype html>
(很多 HTML……)
<p>你将 $38.00 汇给了示例用户。</p>
(很多 HTML……)
规范
Specification |
---|
HTTP Semantics # field.content-location |
浏览器兼容性
BCD tables only load in the browser