gpt4 book ai didi

http - 如何强制 HTTP 客户端使用条件请求进行更新?

转载 作者:可可西里 更新时间:2023-11-01 16:02:33 25 4
gpt4 key购买 nike

在(适当的 RMM 级别 3)RESTful HTTP API 中,我想强制执行这样一个事实,即客户端在更新资源时应发出条件请求,以避免 lost update problem . 返回错误尝试无条件 PUT 请求的客户端的适当响应是什么?

我注意到(已废弃?)mod_atom尝试无条件更新时返回 405 Method Not Allowed,其中 Allow header 设置为 GET, HEAD ( view source )。这似乎有点误导 - 对我来说,这意味着 PUT 永远不是尝试资源的有效方法。也许响应只需要有一个实体主体来解释必须使用 If-MatchIf-Unmodified-Since 来发出 PUT 请求有条件的在什么情况下允许?

或者在实体主体中添加适当解释的 400 Bad Request 可能是更好的解决方案?但同样,这感觉不太对,因为它使用 400 响应来违 react 用程序特定语义,当 RFC 2616 时。说(我的重点):

The request could not be understood by the server due to malformed syntax.

不过,我认为使用 400 Bad Request 来处理特定于应用程序的语义正在成为一种被广泛接受的实用解决方案(需要引用!),我只是过于迂腐了。

最佳答案

正在关注 Jan's request for clarification 2011 年 9 月 27 日,HTTPbis 工作组 published a new Internet-Draft 2011 年 10 月 18 日,具有全新的 428 Precondition Required 状态,专门用于解决我的问题中描述的情况。

截至 2012 年 4 月,现在发布为 RFC 6585 (其他 HTTP 状态代码 - RFC 2616 (HTTP/1.1) 的更新)。 section 3的完整报价:

428 Precondition Required

The 428 status code indicates that the origin server requires therequest to be conditional.

Its typical use is to avoid the "lost update" problem, where aclient GETs a resource's state, modifies it, and PUTs it back tothe server, when meanwhile a third party has modified the state onthe server, leading to a conflict. By requiring requests to beconditional, the server can assure that clients are working withthe correct copies.

Responses using this status code SHOULD explain how to resubmit therequest successfully. For example:

HTTP/1.1 428 Precondition Required
Content-Type: text/html

<html>
<head>
<title>Precondition Required</title>
</head>
<body>
<h1>Precondition Required</h1>
<p>This request is required to be conditional;
try using "If-Match".</p>
</body>
</html>

Responses with the 428 status code MUST NOT be stored by a cache.

在引入这个新状态代码之前,Julian Reschke (HTTPbis 工作组成员)had recommended使用 403 Forbidden 来处理现在由 428 涵盖的情况。

关于http - 如何强制 HTTP 客户端使用条件请求进行更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com