超文本传输协议的一部分-HTTP / 1.1 RFC 2616 Fielding,et al。
下面定义了HTTP / 1.1的一组常用方法。虽然可以扩展这个集合,但是不能假设其他方法为单独扩展的客户端和服务器共享相同的语义。
主机请求头域(14.23节)必须伴随所有的HTTP / 1.1请求。
9.1 安全和幂等方法
9.1.1安全方法
实现者应该意识到,软件代表用户在互联网上的交互,并且应该小心让用户意识到他们可能采取的任何可能对他们自己或他人意想不到的意义的行为。
具体而言,公约已经确定GET和HEAD方法不应该具有除了检索之外采取行动的意义。这些方法应该被认为是“安全的”。这允许用户代理以一种特殊的方式表示其他方法,例如POST,PUT和DELETE,以使用户意识到可能不安全的动作被请求的事实。
当然,由于执行GET请求,不可能确保服务器不会产生副作用; 实际上,一些动态资源认为是一个功能。这里的重要区别是用户没有要求副作用,所以不能为他们负责。
9.1.2幂等方法
方法也可以具有“幂等性”的性质(除了错误或过期问题),N> 0个相同请求的副作用与单个请求相同。方法GET,HEAD,PUT和DELETE共享这个属性。而且,OPTIONS和TRACE方法不应该有副作用,所以它们本身就是幂等的。
然而,即使在该序列中执行的所有方法都是幂等的,一系列的几个请求也是非幂等的。(如果整个序列的单个执行总是产生一个不会因为重新执行该序列的全部或部分而被改变的结果,那么这个序列就是幂等的。)例如,如果一个序列的结果取决于一个序列,则它是非幂等的稍后以相同顺序修改的值。
从来没有副作用的序列根据定义是幂等的(假设没有并行操作正在同一组资源上执行)。
9.2 选项
一个200响应应该包括任何表示由服务器实现的适用于该资源的可选特征(例如,允许)的头字段,可能包括本规范未定义的扩展。响应主体(如果有)还应该包含有关通信选项的信息。这样的格式 正文不是由这个规范定义的,但是可能由未来的HTTP扩展定义。内容协商可以用来选择适当的响应格式。如果没有响应主体,响应必须包含一个字段值为“0”的内容长度字段。 Max-Forwards请求头域可以用来在请求链中定位一个特定的代理。当一个代理收到一个允许请求转发的absoluteURI的OPTIONS请求时,代理务必检查一个Max-Forwards字段。如果Max-Forwards字段值为零(“0”),则代理不能转发该消息; 相反,代理应该用自己的通信选项进行响应。如果Max-Forwards字段值是一个大于零的整数,那么代理在转发请求时必须递减字段值。如果请求中没有Max-Forwards字段,则转发的请求不能包含Max-Forwards字段。
9.3 GET
GET方法意味着检索任何信息(以实体的形式)由Request-URI标识。如果Request-URI指的是一个数据产生过程,那么产生的数据应该作为响应中的实体返回,而不是过程的源文本,除非该文本恰好是过程的输出。
如果请求消息包含If-Modified-Since,If-Unmodified-Since,If-Match,If-None-Match或If-Range标题字段,则GET方法的语义变为“条件GET”。一个有条件的GET方法请求仅在条件头字段描述的情况下传送实体。条件GET方法旨在通过允许缓存实体刷新而不需要多个请求或传送客户端已经拥有的数据来减少不必要的网络使用。
如果请求消息包含Range标头字段,则GET方法的语义变为“部分GET”。部分GET请求只有部分实体被转移,如14.35节所述 。部分GET方法旨在通过允许完成部分检索的实体而不传送已经由客户端持有的数据来减少不必要的网络使用。
对GET请求的响应是可缓存的,当且仅当它符合第13节中描述的HTTP缓存的要求。
读而思duersi
读而思,为您每日推荐值得深度思考的文章!
领取专属 10元无门槛券
私享最新 技术干货