412 Precondition Failed

HTTP 412 Precondition Failed 客户端错误响应状态码表示对目标资源的访问被拒绝。当条件请求(针对 GETHEAD 以外的方法)中由 If-Unmodified-SinceIf-Match 标头定义的条件未能满足时,就会发生这种情况。在这种情况下,请求(通常是资源的上传或修改)无法完成,并返回此错误响应。

状态

http
412 Precondition Failed

示例

先决条件失败

http
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
ETag: W/"0815"

避免“空中碰撞”

借助 ETagIf-Match 标头,你可以防止冲突或“空中碰撞”。例如,在编辑某些维基页面时,内容会被哈希处理并放入成功响应的 ETag

http
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"

当保存维基页面的更改(提交数据)时,POST 请求将包含 If-Match 标头,其中包含客户端从上次编辑中存储的 ETag 值,以检查服务器上资源的 freshness。

http
If-Match: "33a64df551425fcc55e4d42a148795d9f25f89d4"

如果哈希不匹配,则表示文档在此期间已被编辑,并会抛出 412 Precondition Failed 错误。

规范

规范
HTTP 语义
# status.412

另见