If-None-Match
If-None-Match HTTP 請求頭使請求成為條件請求。對於 GET 和 HEAD 方法,伺服器將僅當它沒有與給定 ETag 相匹配的 ETag 時,才返回請求的資源,並使用 200 狀態。對於其他方法,只有當最終存在的資源的 ETag 與列出的任何值都不匹配時,才會處理該請求。
當條件對於 GET 和 HEAD 方法失敗時,伺服器必須返回 HTTP 狀態碼 304(未修改)。對於應用伺服器端更改的方法,將使用狀態碼 412(前提條件失敗)。請注意,生成 304 響應的伺服器必須生成以下任何一個將出現在對相同請求的 200(OK)響應中的標題欄位:Cache-Control、Content-Location、Date、ETag、Expires 和 Vary。
與儲存的 ETag 的比較使用的是弱比較演算法,這意味著如果內容等效,則兩個檔案被認為是相同的 - 它們不必在位元組上完全相同。例如,在頁尾中建立日期不同的兩個頁面仍將被視為相同。
當與 If-Modified-Since 結合使用時,If-None-Match 優先(如果伺服器支援)。
有兩個常見的用例
語法
http
If-None-Match: "<etag_value>"
If-None-Match: "<etag_value>", "<etag_value>", …
If-None-Match: *
指令
- <etag_value>
-
唯一地表示請求資源的實體標籤。它們是放置在雙引號之間的 ASCII 字串(如
"675af34563dc-tr34"),並且可能以W/為字首來指示應該使用弱比較演算法(對於If-None-Match來說這是無用的,因為它只使用該演算法)。 *-
星號是一個特殊的值,表示任何資源。它們只在上傳資源時有用,通常與
PUT一起使用,以檢查之前是否已上傳具有相同標識的另一個資源。
示例
http
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-None-Match: W/"67ab43", "54ed21", "7892dd"
If-None-Match: *
規範
| 規範 |
|---|
| HTTP 語義 # field.if-none-match |
瀏覽器相容性
BCD 表格只在瀏覽器中載入