2013-11-01 31 views
5

按照RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.htmlHTTP HEAD动词的状态码

HEAD方法是相同,除了在应答服务器不能返回一个消息体得到的。响应HEAD请求的HTTP头中包含的元信息应该与响应GET请求发送的信息相同。此方法可用于获取有关请求隐含的实体的元信息,而无需传递实体主体本身。此方法通常用于测试超文本链接的有效性,可访问性和最近的修改。

对HEAD请求的响应可能是可缓存的,因为响应中包含的信息可能用于从该资源更新先前缓存的实体。如果新字段值指示缓存实体与当前实体不同(如将通过Content-Length,Content-MD5,ETag或Last-Modified中的更改所指示的那样),则缓存必须将缓存条目视为陈旧。

从这个定义,我们应该回到200如相应的GET动作,我们应该要回归204因为没有内容?

就我个人而言,我认为更好的解释是使用204状态码。你的解释是什么?

+0

看起来足够清楚:如果您的GET将返回'200',则返回200作为'HEAD'。如果你的'GET'返回204,你将返回204.有什么问题? – 2013-11-01 00:29:53

+1

问题如下: 'GET'操作不应返回'204',因为如果资源/集合存在,则会出现内容。 但是,由于'HEAD'内容必须为空,状态码将为'204'。顺便说一句,从定义中注意这个_SHOULD_项:_a HEAD请求**应该与为响应GET请求而发送的信息相同。因此,这个不同的状态码可能是'GET'和'HEAD'之间的唯一区别头。 – Doug

+0

是的,204的意图是不符合它的标题“无内容”。国际海事组织它的名字很差,但我怀疑我会想出更好的东西。 – aaaaaa

回答

7

请参阅Section 10,它描述了状态码。代码200的描述包括示例,它们包括HEAD。所以显然他们打算HEAD请求应该返回这个代码。

204说明解释的目的:

该响应的主要目的,以允许输入用于行动发生而不引起改变到用户代理的活动文档视图,尽管任何新的或更新的元信息SHOULD应用于当前用户代理活动视图中的文档。

+0

我的错误...感谢您的答案。 – Doug