DevToolPal
简
4xx 客户端错误

412 Precondition Failed

前提条件失败

含义

请求头中的前提条件(如 If-Match 或 If-Unmodified-Since)判定为假,因此服务器没有执行该请求。

常见原因

  • 资源已被他人更新(ETag 已改变)
  • If-Match 使用了过时的缓存 ETag
  • 条件上传时存储中已有更新的对象

解决方法

客户端或访问者

重新 GET 资源以获取当前 ETag,重新应用修改后再发送。

网站或 API 的维护者

返回当前 ETag,并让条件检查与写入操作保持原子性。

响应示例

HTTP/1.1
HTTP/1.1 412 Precondition Failed
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
ETag: "v8"
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Precondition Failed",
  "status": 412,
  "detail": "If-Match \"v7\" does not match the current version \"v8\"."
}

规范

RFC 9110 §15.5.13

常见问题

› 什么是乐观并发控制?

客户端用 If-Match 发送读取时的 ETag;如果资源在此期间被修改,服务器以 412 拒绝写入。

› 412 和 428 的区别?

412:你的前提条件不成立。428:你必须提供前提条件。