409 Conflict 表示请求与目标资源的当前状态冲突,因而无法完成。客户端也许能在解决冲突后重新发送请求,因此响应中应包含足够的信息,以便确定冲突的来源。
它最常见于 PUT 和 PATCH:两个用户编辑同一份文档,客户端上传的版本比已存储的版本更旧,或者 API 拒绝创建已经存在的记录。在 WebDAV 中,如果父集合不存在,MKCOL 和 PUT 会返回 409。
对于带有 If-Match 的条件请求,标准的响应是 412 Precondition Failed;409 用于服务器自行检测到的冲突。
响应示例
HTTP
HTTP/1.1 409 Conflict
Date: Fri, 06 Nov 2026 10:15:32 GMT
Content-Type: application/problem+json
Content-Length: 99
{"title":"Edit conflict","detail":"The document was changed by another user (current version: 7)."} SEO 与重定向检测
409 属于 API 和编辑流程。爬虫用 GET 获取页面,因此公开页面绝不应该返回 409;如果返回了,会被当作 4xx 错误处理,不会被编入索引。
常见原因与使用场景
- 两个用户保存了同一条记录,第二次保存被拒绝。
- 客户端尝试创建已经存在的用户、文件或其他资源。
- 客户端上传的文件版本比当前版本更旧。
- WebDAV 的
MKCOL或PUT指向的文件夹,其父文件夹不存在。