HTTP 状态:409 与 428

HTTP status: 409 vs 428

来自 List of HTTP status code (Wikipedia) 它说:

409冲突

表示由于请求中存在冲突而无法处理该请求,例如多个同时更新之间的编辑冲突。

428 需要先决条件 (RFC 6585)

源服务器要求请求是有条件的。旨在防止 'lost update' 问题,客户端获取资源的状态,修改它,然后将其放回服务器,同时第三方修改了服务器上的状态,导致冲突。"

然而 "lost update" 项中提到的 428 问题不正是 "edit conflict" 409 项中提到的问题?

所以问题是这两种状态码有什么区别,我们应该在什么时候使用它们中的哪一种?

您发送 428 以向客户表明您接受条件请求。

(条件请求是携带 "conditional" 请求头字段的请求,如 https://www.greenbytes.de/tech/webdav/rfc7232.html 中所述)