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