内容位置

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

LocationContent-Location 不同。Location 指示重定向的 URL,而 Content-Location 指示用于访问资源的直接 URL,无需将来进一步进行内容协商。Location 是与响应关联的标头,而 Content-Location 与返回的数据关联。在没有示例的情况下,这种区别可能看起来很抽象。

标头类型 表示标头
禁止的标头名称

语法

http
Content-Location: <url>

指令

<url>

一个相对于请求 URL 的相对绝对 URL。

示例

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

假设某个站点的 API 可以以JSONXMLCSV 格式返回数据。如果某个特定文档的 URL 为 https://example.com/documents/foo,则该站点可以根据请求的Accept 标头返回不同的 Content-Location URL。

请求标头 响应标头
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 创建新的博文

http
POST /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
HTTP/1.1 201 Created
Content-Type: text/markdown
Content-Location: /my-first-blog-post

# My first blog post

I made this through `example.com`'s API. I hope it worked.

指示交易结果的 URL

假设您有一个用于向站点其他用户发送钱的<form>

html
<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
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…)

规范

规范
HTTP 语义
# field.content-location

浏览器兼容性

BCD 表格仅在启用了 JavaScript 的浏览器中加载。

另请参阅