DevToolPal
简
4xx 客户端错误

428 Precondition Required

需要前提条件

含义

服务器要求请求必须是条件请求(If-Match 等),以防止更新丢失。

常见原因

  • 在强制乐观锁的 API 上发送不带 If-Match 的 PUT 或 PATCH

解决方法

客户端或访问者

先 GET 资源拿到 ETag,更新时在 If-Match 中带上它。

网站或 API 的维护者

在响应体中说明需要哪个请求头。

响应示例

HTTP/1.1
HTTP/1.1 428 Precondition Required
Date: Tue, 07 Oct 2025 09:30:00 GMT
Server: nginx
Content-Type: application/problem+json

{
  "type": "about:blank",
  "title": "Precondition Required",
  "status": 428,
  "detail": "Send If-Match with the ETag you last read."
}

规范

RFC 6585 §3

常见问题

› API 为什么要求 If-Match?

为了防止两个客户端在不知情的情况下互相覆盖修改。

› 428 和 412 的区别?

428:没有发送前提条件。412:发送了但不成立。