Content-Location
Content-Location
Content-Location
报头指示为返回的数据的备用位置。主要用途是指示作为内容协商结果传输的资源的 URL 。
Location
和Content-Location
是不同的。
Header type | Entity header |
---|---|
Forbidden header name | no |
语法
Content-Location: <url>
指令
<url> 相对于(请求 URL )或绝对 URL 。
例子
以不同格式从服务器请求数据
假设一个网站的 API 可以以 JSON ,XML 或 CSV 格式返回数据。如果特定文档的 URL 位于https://example.com/documents/foo
,网站可能会返回不同的 URL 以Content-Location
取决于请求的Accept
标题:
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 |
这些 URL 是示例 - 该网站可以使用它希望的任何 URL 模式来提供不同的文件类型,例如查询字符串参数:/documents/foo?format=json
,/documents/foo?format=xml
等等。
然后,客户端可以记住 JSON 版本在该特定的 URL 上可用,在下次请求文档时跳过内容协商。
服务器也可以考虑其他内容协商头,例如Accept-Language
。
指向一个新文档( HTTP 201创建)
假设您正在通过网站的 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.
该网站返回确认帖子已发布的通用成功消息。服务器指定其中
的新职位是Content-Location
:
HTTP/1.1 201 Created
Content-Type: text/plain; charset=utf-8
Content-Location: /my-first-blog-post
✅ Success!
指示交易结果的网址
假设您有一笔<form>钱用于网站的其他用户。
<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>
表单提交后,网站会为交易生成收据。服务器可以用Content-Location
来指示收据的 URL 以供将来访问。
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…)
规范
Specification | Title |
---|---|
RFC 7231, section 3.1.4.2: Content-Location | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |
浏览器兼容性
Feature | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |