RFC2616-HTTP1.1-Header Field Definitions(头字段规定部分—译文) (16)

  在byte-range-spec中给定的first-byte-pos值是第一个字节范围。last-byte-pos给定的是最后一个字节的范围。也就是说,指定的字节位置包括在内。字节的范围从0开始。

  如果last-byte-pos存在,在byte-range-spec中必须大于或等于first-byte-pos,否则byte-range-spec规范在语法上是无效的。包含一个或多个语法无效的byte-range-spec值的byte-range-set的接收者必须忽略包含该byte-range-set的标头字段。

  如果不存在last-byte-pos值,或者如果该值大于或等于实体主体的当前长度,则last-byte-pos的值被取为小于实体主体的当前长度的字节。

  通过选择last-byte-pos,客户端可以在不知道实体大小的情况下限制检索的字节数。

         suffix-byte-range-spec = "-" suffix-length

         suffix-length = 1*DIGIT

  suffix-byte-range-spec被用来用于指定实体主体的后缀,其长度由suffix-length值给出。(也就是说,该结构指定实体主体的最后N字节。)如果实体短于指定的suffix-length,则使用整个实体主体。

  如果一个语法有效的byte-range-set包含至少一个byte-range-spec,其first-byte-pos小于实体主体的当前长度,或者至少一个非零的suffix-byte-range-spec,那么byte-range-set是可满足的。否则, byte-range-se是无法满足的。如果byte-range-set无法满足,服务器应该返回状态为416的响应(Requested range not satisfiable)。否则,服务器应该返回状态为206(Partial Content)的响应,其中包含实体主体的可满足范围。  

  下面是一个指定字节范围值的例子(假定实体主体的长度是10000):

        - 最开始的500个字节 (字节范围是 0-499, 包含开始和结束的值):  bytes=0-499

        - 第二部分500个字节 (字节范围是 500-999, 包含开始和结束的值):bytes=500-999

        - 最后500个字节 (字节范围是 9500-9999, 包含开始和结束的值):bytes=-500

        - 或者 bytes=9500-

        - 只有第一个和最后一个字节 (字节 0 和 9999):  bytes=0-0,-1

        -  (字节范围 500-999, 包含开始和结束的值)下面是几个合法但不规范的第二部分字节的表示方法:

       bytes=500-600,601-999

           bytes=500-700,601-999

14.35.2 Range Retrieval Requests(范围检索请求)

  使用条件或无条件GET方法的HTTP检索请求可以使用Range请求头请求实体的一个或多个子范围,而不是整个实体,它适用于作为请求结果返回的实体:

        Range = "Range" ":" ranges-specifier

  服务器可能忽略Range头字段。然而,HTTP/1.1源服务器和中间缓存应该尽可能支持字节范围,因为Range头字段支持对部分失败传输的高效恢复,并且支持对大型实体的高效部分检索。

  如果服务器支持Range头字段,并且指定的范围适合实体:

    - 无条件GET中出现的Range头字段会修改GET请求成功返回的内容。换句话说,响应的状态代码是206(Partial Content),而不是200 (OK)。

    - 有条件的GET请求(使用If-Modifify-Since或者If-None-Match中一个或两个的请求,或者If-Unmodify-Since和If-Match中一个或两个的请求)中存在的Range头字段可以修改如果GET成功且条件为true时返回的内容。如果条件为false,则不影响返回的304(Not Modified)响应。

  在某些情况下,除了Range头字段之外,使用If-Range头字段(参见14.27节)可能更合适。

  如果支持范围的代理接收范围请求,将请求转发到入站服务器,并接收整个实体作为响应,那么它应该只将请求范围返回给客户端。如果响应与缓存分配策略一致,则应该将整个接收到的响应存储在缓存中。

14.36 Referer

  Referer[sic]请求头字段允许客户端为服务器的着想的角度指定获取请求URI的资源的地址(“referrer”,尽管头字段拼错了)。Referer请求头允许服务器为感兴趣的资源生成返回链接列表,日志记录,优化缓存等等。它也允许对过时的或输入错误的链接进行跟踪以进行维护。如果从没有自己的URI(例如从用户键盘输入)的源获取请求URI,则不能发送Referer字段。

         Referer  = "Referer" ":" ( absoluteURI | relativeURI )

  例子:

         Referer:

  如果字段值是一个相对URI,则应该将其解释为相对于请求URI。URI不能包含片段。有关安全方面的参考,请查看第小节。

14.37 Retry-After

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyxpxz.html