HEAD
和OPTIONS
有些混淆。
如果有人能够澄清这些动词的含义,那将不胜感激。
OPTIONS
用于检索给定资源的可用HTTP动词?HEAD
用于确定给定资源是否可用?
注:澄清是针对RESTful API体系结构重新使用HTTP动词而言。我现在意识到,
HEAD
和OPTIONS
都不应该被重新用途,而应该像任何HTTP应用程序一样以可预测的方式行事。时间过得真快啊。HEAD
和OPTIONS
有些混淆。
如果有人能够澄清这些动词的含义,那将不胜感激。
OPTIONS
用于检索给定资源的可用HTTP动词?HEAD
用于确定给定资源是否可用?
HEAD
和OPTIONS
都不应该被重新用途,而应该像任何HTTP应用程序一样以可预测的方式行事。时间过得真快啊。OPTIONS
方法返回关于 API 的信息(方法/内容类型)
HEAD
方法返回关于 资源 的信息(版本/长度/类型)
服务器响应
OPTIONS
HTTP/1.1 200 OK
Allow: GET,HEAD,POST,OPTIONS,TRACE
Content-Type: text/html; charset=UTF-8
Date: Wed, 08 May 2013 10:24:43 GMT
Content-Length: 0
标题
HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: text/html; charset=UTF-8
Date: Wed, 08 May 2013 10:12:29 GMT
ETag: "780602-4f6-4db31b2978ec0"
Last-Modified: Thu, 25 Apr 2013 16:13:23 GMT
Content-Length: 1270
OPTIONS
:用于确定资源支持的HTTP方法,例如我们可以通过DELETE或PUT更新它吗?HEAD
:检查资源是否已更改。在维护缓存版本时非常有用。HEAD
:检索关于资源的元数据,例如其媒体类型或大小,在进行可能产生代价的检索之前先了解这些信息。HEAD, OPTIONS
:测试资源是否存在且可访问。例如,在应用程序中验证用户提交的链接。
这里是有关如何将HEAD和OPTIONS整合到RESTful架构中的简洁文章。
200响应应包括任何头字段,指示服务器实现的可选功能并适用于该资源(例如,Allow),可能包括此规范未定义的扩展。如果有任何响应体,则还应包括有关通信选项的信息。这样的主体格式未由本规范定义,但可以由HTTP的未来扩展定义。内容协商可以用于选择适当的响应格式。如果不包括响应正文,则响应必须包括带有“0”的字段值的Content-Length字段。
Max-Forwards请求头字段可以用于在请求链中定位特定代理。当代理接收到绝对URI的OPTIONS请求,允许请求转发时,代理必须检查Max-Forwards字段。如果Max-Forwards字段值为零(“0”),则代理不得转发消息;相反,代理应该回复自己的通信选项。如果Max-Forwards字段值大于零的整数,则代理在转发请求时必须递减字段值。如果请求中不存在Max-Forwards字段,则转发的请求不得包含Max-Forwards字段。
9.4 HEAD
HEAD方法与GET相同,只是服务器不能在响应中返回消息正文。响应HEAD请求的HTTP头中包含的元信息应与响应GET请求发送的信息相同。此方法可用于获取有关请求隐含实体的元信息,而不传输实体正文本身。该方法经常用于测试超文本链接的有效性、可访问性和最近修改等。
对HEAD请求的响应可以被缓存,因为响应中包含的信息可以用于从该资源更新先前缓存的实体。如果新字段值表明缓存的实体与当前实体不同(这将由Content-Length、Content-MD5、ETag或Last-Modified的更改指示),则缓存必须将缓存条目视为过期。
CONNECT
,但是想象一下,如果你的应用程序的消费者有一个代理实现了 RFC 中指定的 CONNECT
方式,那么请求可能无法传递到你的应用程序。 - Steve BuzonasOPTIONS命令告诉您诸如“此资源允许使用哪些方法”之类的信息。
HEAD获取HTTP标头,与GET请求相同,但没有正文。这使客户端确定缓存信息、将返回什么内容类型、将返回什么状态代码。其可用性只是其中的一小部分。