If-Match
If-Match HTTP 请求报头使得所述请求为条件。对于GET和HEAD方法,服务器将只在与请求的资源匹配时发回请求的资源ETags。对于PUT和其他非安全方法,在这种情况下它只会上传资源。
与存储的ETag比较使用强比较算法,这意味着两个文件被认为是相同的字节到字节。当W/在前面使用前缀时,这被削弱了ETag。
有两种常见用例:
- 对于
GET和HEAD方法,与Range头部结合使用,可以保证请求的新范围来自与前一个相同的资源。如果不匹配,则416返回( Range Not Satisfiable )响应。
- 对于其他方法,特别是对
PUT,If-Match可用于防止丢失的更新问题。它可以检查用户想要上传的资源的修改是否会覆盖从原始资源获取以来完成的另一个更改。如果请求无法实现,412则返回( Precondition Failed )响应。
Header type | Request header |
|---|---|
Forbidden header name | no |
语法
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: *规范
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) |
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com

