TrueURL
TrueURL

菜单

412 前提条件失败

请求头中的某个条件(例如 If-Match 或 If-Unmodified-Since)不成立,因此服务器没有执行修改。

原因短语
Precondition Failed
是否重定向
否
默认可缓存
否

412 Precondition Failed 表示请求头中的一个或多个条件判断为假。它是 If-Match 或 If-Unmodified-Since 判断失败的结果,或者在 GET 和 HEAD 以外的方法中 If-None-Match 判断失败的结果。服务器没有执行所请求的操作。

它的主要用途是防止更新丢失(乐观并发控制)。客户端读取资源及其 ETag,编辑后带上 If-Match 和该 ETag 发送修改。如果在此期间有人修改了资源,ETag 就不再匹配,服务器会返回 412,而不是覆盖别人的修改。它也和 If-None-Match: * 一起使用,实现仅在资源尚不存在时才创建。

对于 GET 和 HEAD,If-None-Match 或 If-Modified-Since 判断为假时产生的是 304 Not Modified,而不是 412。

响应示例

HTTP
HTTP/1.1 412 Precondition Failed
Date: Fri, 06 Nov 2026 10:15:32 GMT
ETag: "v8"
Content-Type: application/json
Content-Length: 52

{"error":"If-Match does not match the current ETag"}

SEO 与重定向检测

412 出现在 API 和 WebDAV 的条件写入操作中,与抓取无关;爬虫的条件 GET 请求得到的是 304 或 200。如果重定向检测显示 412,应检查作为自定义请求头添加的 If-* 请求头。

常见原因与使用场景

  • 资源在读取之后被他人修改,因此编辑被拒绝(ETag 不匹配)。
  • If-None-Match: * 阻止了覆盖已存在的文件。
  • 云存储或 CDN API 收到了带有过时 ETag 的条件请求。

URL 重定向检测

使用免费的 TrueURL 重定向检测工具,逐跳查看一个 URL 返回的每一个状态码。