在线文档教程

Content-Location

Content-Location

Content-Location报头指示为返回的数据的备用位置。主要用途是指示作为内容协商结果传输的资源的 URL 。

LocationContent-Location是不同的。

Header typeEntity header
Forbidden header nameno

语法

Content-Location: <url>

指令

<url> 相对于(请求 URL )或绝对 URL 。

例子

以不同格式从服务器请求数据

假设一个网站的 API 可以以 JSON ,XML 或 CSV 格式返回数据。如果特定文档的 URL 位于https://example.com/documents/foo,网站可能会返回不同的 URL 以Content-Location取决于请求的Accept标题:

Request headerResponse header
Accept: application/json, text/jsonContent-Location: /documents/foo.json
Accept: application/xml, text/xmlContent-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…)

规范

SpecificationTitle
RFC 7231, section 3.1.4.2: Content-LocationHypertext Transfer Protocol (HTTP/1.1): Semantics and Content

浏览器兼容性

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)