14.17 Content-Range

   The Content-Range entity-header is sent with a partial entity-body to
   specify where in the full entity-body the partial body should be
   inserted. It also indicates the total size of the full entity-body.
   When a server returns a partial response to a client, it must
   describe both the extent of the range covered by the response, and
   the length of the entire entity-body.

          Content-Range = "Content-Range" ":" content-range-spec

          content-range-spec      = byte-content-range-spec

          byte-content-range-spec = bytes-unit SP first-byte-pos "-"
                                    last-byte-pos "/" entity-length

          entity-length           = 1*DIGIT

   Unlike byte-ranges-specifier values, a byte-content-range-spec may
   only specify one range, and must contain absolute byte positions for
   both the first and last byte of the range.

   A byte-content-range-spec whose last-byte-pos value is less than its
   first-byte-pos value, or whose entity-length value is less than or
   equal to its last-byte-pos value, is invalid. The recipient of an
   invalid byte-content-range-spec MUST ignore it and any content
   transferred along with it.










Fielding, et. al.           Standards Track                   [Page 114]

RFC 2068                        HTTP/1.1                    January 1997


   Examples of byte-content-range-spec values, assuming that the entity
   contains a total of 1234 bytes:

     o  The first 500 bytes:

          bytes 0-499/1234

     o  The second 500 bytes:

          bytes 500-999/1234

     o  All except for the first 500 bytes:

          bytes 500-1233/1234

     o  The last 500 bytes:

          bytes 734-1233/1234

   When an HTTP message includes the content of a single range (for
   example, a response to a request for a single range, or to a request
   for a set of ranges that overlap without any holes), this content is
   transmitted with a Content-Range header, and a Content-Length header
   showing the number of bytes actually transferred. For example,

          HTTP/1.1 206 Partial content
          Date: Wed, 15 Nov 1995 06:25:24 GMT
          Last-modified: Wed, 15 Nov 1995 04:58:08 GMT
          Content-Range: bytes 21010-47021/47022
          Content-Length: 26012
          Content-Type: image/gif

   When an HTTP message includes the content of multiple ranges (for
   example, a response to a request for multiple non-overlapping
   ranges), these are transmitted as a multipart MIME message. The
   multipart MIME content-type used for this purpose is defined in this
   specification to be "multipart/byteranges". See appendix 19.2 for its
   definition.

   A client that cannot decode a MIME multipart/byteranges message
   should not ask for multiple byte-ranges in a single request.

   When a client requests multiple byte-ranges in one request, the
   server SHOULD return them in the order that they appeared in the
   request.

   If the server ignores a byte-range-spec because it is invalid, the
   server should treat the request as if the invalid Range header field



Fielding, et. al.           Standards Track                   [Page 115]

RFC 2068                        HTTP/1.1                    January 1997


   did not exist. (Normally, this means return a 200 response containing
   the full entity). The reason is that the only time a client will make
   such an invalid request is when the entity is smaller than the entity
   retrieved by a prior request.

14.18 Content-Type

   The Content-Type entity-header field indicates the media type of the
   entity-body sent to the recipient or, in the case of the HEAD method,
   the media type that would have been sent had the request been a GET.

          Content-Type   = "Content-Type" ":" media-type
   Media types are defined in section 3.7. An example of the field is

          Content-Type: text/html; charset=ISO-8859-4

   Further discussion of methods for identifying the media type of an
   entity is provided in section 7.2.1.