If-Match

If-Match HTTP 請求頭使請求具有條件性。

伺服器僅當資源與列出的 ETag 值之一匹配時,才會返回針對 GETHEAD 方法的請求資源,或針對 PUT 及其他非安全方法的上傳資源。如果條件不匹配,則返回 412(前提條件失敗)響應。

與儲存的 ETag 的比較使用強比較演算法,這意味著只有兩個檔案逐位元組完全相同才被視為相同。如果列出的 ETag 帶有 W/ 字首,表示弱實體標記,則此比較演算法將永遠無法匹配它。

有兩種常見的用例

  • 對於 GETHEAD 方法,與 Range 標頭結合使用,可以保證請求的新範圍來自與先前範圍相同的資源。
  • 對於其他方法,特別是對於 PUTIf-Match 可用於防止丟失更新問題。它可以檢查使用者想要上傳的資源的修改是否不會覆蓋自原始資源被獲取以來所做的其他更改。
標頭型別 請求標頭
禁止的標頭名稱

語法

http
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …

指令

<etag_value>

唯一表示請求資源的實體標記。它們是由雙引號括起來的 ASCII 字串(例如 "675af34563dc-tr34")。它們可以以 W/ 為字首,表示它們是“弱”的,即它們在語義上表示資源,而不是逐位元組表示。但是,在If-Match 標頭中,弱實體標記將永遠不會匹配。

*

星號是一個表示任何資源的特殊值。請注意,如果源伺服器沒有目標資源的當前表示,則此值必須匹配為 false

示例

http
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"

If-Match: "67ab43", "54ed21", "7892dd"

If-Match: *

規範

規範
HTTP 語義
# field.if-match

瀏覽器相容性

BCD 表格僅在啟用 JavaScript 的瀏覽器中載入。

另請參閱