Content-Location header

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

HTTP Content-Location 表示頭標示了返回資料的備用位置。它主要用於指示透過內容協商傳輸的資源的 URL。

Content-Location 頭標與 Location 頭標不同。當發生內容協商時,Content-Location 指示訪問該資源的直接 URL,允許客戶端將來繞過此資源的內容協商。另一方面,Location 指示 3XX 重定向的目標,或 201 Created 響應中新建立資源的 URL。

頭型別 表示形式頭
禁止請求頭

語法

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

指示交易結果的 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

瀏覽器相容性

另見