在线文档教程

If-Match

If-Match

If-Match HTTP 请求报头使得所述请求为条件。对于GETHEAD方法,服务器将只在与请求的资源匹配时发回请求的资源ETags。对于PUT和其他非安全方法,在这种情况下它只会上传资源。

与存储的ETag比较使用强比较算法,这意味着两个文件被认为是相同的字节到字节。当W/在前面使用前缀时,这被削弱了ETag

有两种常见用例:

  • 对于GETHEAD方法,与Range头部结合使用,可以保证请求的新范围来自与前一个相同的资源。如果不匹配,则416返回( Range Not Satisfiable )响应。

  • 对于其他方法,特别是对PUTIf-Match可用于防止丢失的更新问题。它可以检查用户想要上传的资源的修改是否会覆盖从原始资源获取以来完成的另一个更改。如果请求无法实现,412则返回( Precondition Failed )响应。

Header typeRequest header
Forbidden header nameno

语法

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

指令

<etag_value> 只表示请求资源的实体标签。它们是放置在双引号(像 "675af34563dc-tr34")之间的 ASCII 字符串,可以加前缀W/表示应使用弱比较算法。*星号是表示任何资源的特殊值。

例子

If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" If-Match: W/"67ab43", "54ed21", "7892dd" If-Match: *

规范

SpecificationTitle
RFC 7232, section 3.1: If-MatchHypertext Transfer Protocol (HTTP/1.1): Conditional Requests

浏览器兼容性

FeatureChromeFirefoxEdgeInternet ExplorerOperaSafari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)

FeatureAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic Support(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)(Yes)