是HTTP POST请求允许发送回一个响应的身体吗?(Is HTTP POST request al

2019-07-31 09:20发布

按照HTTP规范:

如果资源已经被原始服务器上创建,响应应该是201(创建)和包含其描述了请求的状态,指的是新的资源的实体,和一个Location头部(见14.30)。

这是否意味着POST请求应该总是发送在Location头重定向URI没有响应主体?

Answer 1:

它是完全可以接受的指定响应主体使用Location头在同一时间。 当使用Location头与201的响应,你不是重定向客户端,你只是告诉它在那里可以找到未来的资源。

重定向只适用于3xx响应。

在此W3C文档进一步解释,虽然该文本实际上是相当含糊:

位置响应头字段用于收件人重定向到新的资源的请求或标识的完成比Request-URI中的其它的位置。 对于201(创建)的响应,该位置是这是由请求创建新的资源。 对于3xx响应,位置应注明服务器的首选URI为自动重定向到资源。

我读的话说,“... ...重定向或... IDENTIF [Y] ...新的资源”,但它不完全是一个普通的英语句子。



Answer 2:

基于HTTP 1.1规范的第9.5段 ,这对于这样的问题的参考,这是我的理解:

是的,你可以和规范清楚,你可以做什么和怎么做:

由执行的操作POST方法可能不会导致可以通过URI标识的资源。 在这种情况下,无论是200 (OK)或204 (无内容)是适当的响应状态,这取决于响应是否包括描述结果的实体。

如果资源已经在源服务器上创建的,则反应应该是201 (创建)和包含其描述了请求的状态,指的是新的资源的实体,和一个Location头部(见14.30)。

该方法的响应不能缓存,除非该响应包括适当Cache-ControlExpires的报头字段。 然而, 303 (见其他)响应能够用来引导用户代理检索缓存资源。



文章来源: Is HTTP POST request allowed to send back a response body?
标签: http