来自非修改POST请求的 304响应



我正在研究一个POST HTTP API,它不修改或在服务器上创建任何状态。这个API是用POST方法实现的,因为它需要接受多个复杂的输入,而使用查询参数是不可能的。

对于这种只读POST api,如果条件检查失败(If-Match/If-None-Match),返回正确的响应状态是什么,应该是304 Not Modified还是412 Precondition Failed?

注意:这是一个内部服务API,客户端知道这是一个非修改请求。

对于GET请求,我们期望有一个if - none - match报头,如果条件成立,它通常会产生一个带有表示的更新副本的200响应,当前提条件失败时(意味着客户端资源副本已经是最新的),它会产生一个304响应。

当以只读方式使用POST时,的语义应该是相同的。(请注意,我们在这里有点边缘情况;一般用途的客户端通常不会知道这个特定的POST请求是安全的,并且可能不知道该将哪个先决条件头附加到请求中。例如,如果您尝试在web浏览器中使用HTML表单来访问此资源,则可能无法获得所需的条件标头。

412 Precondition Failed通常在请求修改资源时使用,与If-Match标头一起使用。

参考:HTTP语义,第13节

相关内容

  • 没有找到相关文章

最新更新