Is using the HTTP Content-Range header appropriate

2019-02-15 12:44发布

问题:

I am working on an existing Silverlight file uploader that breaks files into multiple chunks and transmits the file using multiple HTTP requests.

Currently, it sends the start and total byte information on the querystring, but as learning exercise, I'd like to use a more standards-based approach.

I've previously used the HTTP Content-Range header when implementing an endpoint that serves content. Is this header also appropriate to use when posting content from a client to the server?

回答1:

Yes.

RFC 2616 (HTTP 1.1), Section 14 begins by stating:

For entity-header fields, both sender and recipient refer to either the client or the server, depending on who sends and who receives the entity.

Other than that, Section 14.16, which defines the Content-Range header, does not appear to contain any language limiting its use to either the request or response.



回答2:

Probably not, at least as of 2014 (the original answer is from 2011).

The updated HTTP 1.1 specification, rfc7231 (4.3.3), says the following about valid POST responses:

An origin server indicates response semantics by choosing an appropriate status code depending on the result of processing the POST request; almost all of the status codes defined by this specification might be received in a response to POST (the exceptions being 206 (Partial Content), 304 (Not Modified), and 416 (Range Not Satisfiable)).

Given that this language was explicitly added to the updated spec, I doubt the authors intended that the Content-Range header be used with the POST method.