17 - 03 - 25 图解HTTP(29)

# If-None-Match #

 

只有在If-None-Match的字段值与ETag值不一致时,可处理该请求。与 If-Match首部字段的作用相反。

=首部字段If-None-Match属于附带条件之一。它和首部字段 If-Match作用相反。

用于指定If-None-Match字段值的实体标记(ETag)值与请求资源的ETag不一致时,它就告知服务器处理该请求。

在GET或HEAD方法中使用首部字段 If-None-Match  可获取最新的资源。

因此,这与使用首部字段 If-Modified-Since  时有些类似。

# If-Range #


首部字段If-Range属于附带条件之一。

它告知服务器若指定的 If-Range字段值(ETag值或者时间)和请求资源的ETag值或时间相一致时,则作为范围请求处理。

反之,则返回全体资源。

如果不使用首部字段if-Range则需要进行两次处理。

下面我们思考一下不使用首部字段 If-Range  发送请求的情况。服务器端的资源如果更新,

那客户端持有资源中的一部分也会随之无效,当然,范围请求作为前提是无效的。

这时,服务器会暂且以状态码 412Precondition Failed  作为响应返回,其目的是催促客户端再次发送请求。

这样一来的话,与使用首部字段If-Range  比起来,就需要花费两倍的功夫。


# If-Unmodified-Since #

首部字段 If-Unmodified-Since和首部字段 If-Modified-Since  的作用相反。

它的作用的是告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,

才能处理请求。如果在指定日期时间后发生了更新,则以状态码 412 Precondition Failed  作为响应返回。

exIf-Unmodified-Since: Thu, 03 Jul 2012 00:00:00 GMT

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章