Skip to content

Commit

Permalink
bug #18080 [HttpFoundation] Set the Content-Range header if the reque…
Browse files Browse the repository at this point in the history
…sted Range is unsatisfied (jakzal)

This PR was merged into the 2.3 branch.

Discussion
----------

[HttpFoundation] Set the Content-Range header if the requested Range is unsatisfied

| Q             | A
| ------------- | ---
| Branch        | 2.3
| Bug fix?      | yes
| New feature?  | no
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets | -
| License       | MIT
| Doc PR        | -

This is a followup to #17150 (comment)

[RFC2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) specifies the Content-Range header SHOULD be included with a *416 Requested Range Not Satisfiable* response:

>    When this status code is returned for a byte-range request, the response SHOULD include a Content-Range entity-header field specifying the current length of the selected resource (see section 14.16). This response MUST NOT use the multipart/byteranges content- type.

[RFC 7233](https://tools.ietf.org/html/rfc7233#section-4.2) specifies what should be the header's value. It's in the "Request for comments" state, but it's the best definition I could find. This value is valid according to rfc2616 as well.

Commits
-------

54329d8 [HttpFoundation] Set the Content-Range header if the requested Range is unsatisfied
  • Loading branch information
fabpot committed Mar 10, 2016
2 parents 5340cbd + 54329d8 commit be867ae
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 1 deletion.
Expand Up @@ -252,6 +252,7 @@ public function prepare(Request $request)
if ($start <= $end) {
if ($start < 0 || $end > $fileSize - 1) {
$this->setStatusCode(416);
$this->headers->set('Content-Range', sprintf('bytes */%s', $fileSize));
} elseif ($start !== 0 || $end !== $fileSize - 1) {
$this->maxlen = $end < $fileSize ? $end - $start + 1 : -1;
$this->offset = $start;
Expand Down
Expand Up @@ -211,7 +211,7 @@ public function testInvalidRequests($requestRange)
$response->sendContent();

$this->assertEquals(416, $response->getStatusCode());
#$this->assertEquals('', $response->headers->get('Content-Range'));
$this->assertEquals('bytes */35', $response->headers->get('Content-Range'));
}

public function provideInvalidRanges()
Expand Down

0 comments on commit be867ae

Please sign in to comment.