?
本文檔使用 php中文網(wǎng)手冊 發(fā)布
If-Match
HTTP 請求報頭使得所述請求為條件。對于GET
和HEAD
方法,服務(wù)器將只在與請求的資源匹配時發(fā)回請求的資源ETags
。對于PUT
和其他非安全方法,在這種情況下它只會上傳資源。
與存儲的ETag
比較使用強比較算法,這意味著兩個文件被認(rèn)為是相同的字節(jié)到字節(jié)。當(dāng)W/
在前面使用前綴時,這被削弱了ETag
。
有兩種常見用例:
對于GET
和HEAD
方法,與Range
頭部結(jié)合使用,可以保證請求的新范圍來自與前一個相同的資源。如果不匹配,則416
返回( Range Not Satisfiable )響應(yīng)。
對于其他方法,特別是對PUT
,If-Match
可用于防止丟失的更新問題。它可以檢查用戶想要上傳的資源的修改是否會覆蓋從原始資源獲取以來完成的另一個更改。如果請求無法實現(xiàn),412
則返回( Precondition Failed )響應(yīng)。
Header type | Request header |
---|---|
Forbidden header name | no |
If-Match: <etag_value>If-Match: <etag_value>, <etag_value>, …
<etag_value> 只表示請求資源的實體標(biāo)簽。它們是放置在雙引號(像 "675af34563dc-tr34"
)之間的 ASCII 字符串,可以加前綴W/
表示應(yīng)使用弱比較算法。*
星號是表示任何資源的特殊值。
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"If-Match: W/"67ab43", "54ed21", "7892dd"If-Match: *
Specification | Title |
---|---|
RFC 7232, section 3.1: If-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) |