?
This document uses PHP Chinese website manual Release
If-None-Match
HTTP 請求報頭使得所述請求為條件。對于GET
和HEAD
方法,200
只有服務(wù)器沒有ETag
與給定資源匹配的情況下,服務(wù)器才會返回具有狀態(tài)的請求資源。對于其他方法,僅當(dāng)最終現(xiàn)有資源ETag
不符合任何列出的值時才會處理該請求。
當(dāng)條件GET
和HEAD
方法失敗時,服務(wù)器必須返回 HTTP 狀態(tài)碼304(未修改)。對于應(yīng)用服務(wù)器端更改的方法,將使用狀態(tài)碼412( Precondition Failed )。請注意,生成304響應(yīng)的服務(wù)器必須生成以下頭域中的任何一個頭域,這些域頭域應(yīng)該發(fā)送到同一個請求的200(OK)響應(yīng)中:Cache-Control,Content-Location,Date,ETag,Expires 和 Vary。
與存儲的比較ETag
使用弱比較算法,這意味著不僅兩個文件是相同的字節(jié)到字節(jié),而且如果內(nèi)容是等同的,則認(rèn)為兩個文件是相同的。例如,只有頁腳生成日期不同的兩頁才會被視為相同。
當(dāng)與其結(jié)合使用時If-Modified-Since
,它具有優(yōu)先權(quán)(如果服務(wù)器支持它)。
有兩種常見用例:
對于GET
和HEAD
方法,更新具有關(guān)聯(lián)的緩存實體ETag
。
對于其他方法,特別是對PUT
,If-None-Match
與所使用的*
值可以用來保存不知道存在的文件,保證另一個上載并沒有發(fā)生之前,失去了以前放的數(shù)據(jù); 此問題是丟失更新問題的變體。
Header type | Request header |
---|---|
Forbidden header name | no |
If-None-Match: <etag_value>If-None-Match: <etag_value>, <etag_value>, … If-None-Match: *
<etag_value> 唯一表示請求資源的實體標(biāo)簽。它們是放置在雙引號(像 "675af34563dc-tr34"
)之間的一串 ASCII 字符,可以加前綴W/
以表示應(yīng)該使用弱比較算法(這是無用的,If-None-Match
因為它只使用該算法)。*
星號是表示任何資源的特殊值。它們只有在上傳資源時才有用,通常PUT
用于檢查具有該標(biāo)識的另一資源是否已經(jīng)上傳過。
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"If-None-Match: W/"67ab43", "54ed21", "7892dd"If-None-Match: *
Specification | Title |
---|---|
RFC 7232, section 3.2: If-None-Match | Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests |
Feature | Chrome | Firefox | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |