428 Precondition Required(RFC 6585)表示源服务器要求请求必须是条件请求。它用于防止“更新丢失”问题:客户端读取资源、修改后再用 PUT 写回,结果覆盖了别人在此期间所做的修改。
通过对非条件写入请求返回 428,服务器强制客户端发送带有所读取 ETag 的 If-Match。如果资源已被修改,条件请求就会以 412 Precondition Failed 失败,而不是悄无声息地覆盖数据。响应应说明如何重新提交请求才能成功。
响应示例
HTTP
HTTP/1.1 428 Precondition Required
Date: Fri, 06 Nov 2026 10:15:32 GMT
Content-Type: application/json
Content-Length: 71
{"error":"Send If-Match with the current ETag to update this resource"} SEO 与重定向检测
对 SEO 没有影响:428 适用于 API 和协同编辑中的写入请求,爬虫的 GET 请求不会触发它。
常见原因与使用场景
- API 要求
PUT、PATCH或DELETE带有If-Match,而客户端没有发送。 - 协同文档服务强制使用乐观锁。
- 不支持 ETag 的客户端库与这类 API 通信。