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 表格只在浏览器中加载