後端、資料與安全 深入了解 A1 · 正式標準 平台: 網頁

Content Negotiation

內容協商

內容協商是 HTTP 依照用戶端偏好和伺服器能提供的格式,選出資源版本的方式。

看看怎麼運作
也有人這樣說 Content Negotiation表述協商Accept 協商

看看怎麼運作

原創情境範例內容協商

另一個例子

報表 API 依 `Accept` 傳送 `application/json` 或 `text/csv`。兩種都不能使用時回傳 406,並加入 `Vary: Accept`,避免快取把 CSV 傳給 JSON 用戶端。語言會另外協商,而且每個回應都有清楚的 `Content-Type`。

主要部分

  1. 01Client 偏好
  2. 02可用表述
  3. 03選定回應與 Vary

什麼時候用

同一資源真的有不同媒體格式、語言、編碼或偏好版本時,使用標準請求標頭進行協商。

什麼時候不要用

不要建立快取無法分辨的版本,也不要默默忽略伺服器不支援、但用戶端要求的必要媒體格式。

程式裡的名稱

Accept / Accept-Language / Accept-Encoding + Content-Type / Content-Language + Vary

上線前要檢查

檢查介面約定、任何情況都不能破壞的規則、授權與輸入限制。測試重試、重複執行只生效一次、逾時與部分失敗。驗證資料完整性、相容性、監控、復原與回復上一版。

可以直接複製的需求

預期成果:為這套系統設計或檢查 內容協商 (Content Negotiation),並讓資料保持正確、安全且容易維護。 使用者情境:報表 API 依 `Accept` 傳送 `application/json` 或 `text/csv`。兩種都不能使用時回傳 406,並加入 `Vary: Accept`,避免快取把 CSV 傳給 JSON 用戶端。語言會另外協商,而且每個回應都有清楚的 `Content-Type`。 技術概念或控制措施:內容協商 (Content Negotiation)。 適用理由:同一資源真的有不同媒體格式、語言、編碼或偏好版本時,使用標準請求標頭進行協商。 不應使用的情況:不要建立快取無法分辨的版本,也不要默默忽略伺服器不支援、但用戶端要求的必要媒體格式。 工程要求:定義輸入、輸出、介面約定,以及任何情況都不能破壞的規則。說明授權與輸入檢查範圍。定義失敗、逾時、重試和重複執行只生效一次的規則。也要定義資料搬移與相容限制。 營運要求:加入監控訊號與隱藏敏感資料的記錄。設定容量上限並寫好操作手冊。測試復原與回復上一版的流程。 驗收條件:介面約定與失敗路徑測試通過。重試或部分失敗時,資料與授權規則仍正確。效能上限、監控、復原與回復上一版的方法都已驗證。 證據與限制(證據邊界):標準只涵蓋列出的範圍,不會替你決定外觀、產品做法或 Vibulary 的教學範例。 待確認:程式執行環境、資料位置、流量形態、資料一致需求和安全邊界。也要確認相容期間、服務目標(SLO)與回復上一版的限制。

檢查這份需求

請 AI 程式助手檢查目前如何使用 內容協商 (Content Negotiation)。 定義:內容協商是 HTTP 依照用戶端偏好和伺服器能提供的格式,選出資源版本的方式。 正式環境檢查:檢查介面約定、任何情況都不能破壞的規則、授權與輸入限制。測試重試、重複執行只生效一次、逾時與部分失敗。驗證資料完整性、相容性、監控、復原與回復上一版。 修改程式前,先列出看到的證據、缺口、嚴重程度,以及最小且安全的修正。

A1
這個術語有多正式?

正式標準

本頁說明的規則,可在列出的正式標準中找到。

標準只涵蓋列出的範圍,不會替你決定外觀、產品做法或 Vibulary 的教學範例。

適用範圍
只包含來源有說明的內容:正式名稱、定義、語意、實作
文件狀態
標準軌文件
查證日期
2026-07-30

證據來源與適用範圍

正式來源 + 術語參考資料 · IETF · 標準軌文件 HTTP Semantics — 12. Content Negotiation 12. Content Negotiation 適用範圍: 正式名稱、定義、語意、實作 本頁用途: 直接術語參考 來源涵蓋內容: 正式名稱, 定義, 語意, 實作 正式來源 · IETF · 標準軌文件 HTTP Semantics 適用範圍: 正式名稱、定義、語意、實作 本頁用途: 只支援寫明的範圍 來源涵蓋內容: 正式名稱, 定義, 語意, 實作

自行複製

瀏覽器無法自動複製。請選取下方文字,再自行複製。