Skip to content

Commit

Permalink
bug #31863 [HttpFoundation] Fixed case-sensitive handling of cache-co…
Browse files Browse the repository at this point in the history
…ntrol header in RedirectResponse constructor (Ivo)

This PR was merged into the 3.4 branch.

Discussion
----------

[HttpFoundation] Fixed case-sensitive handling of cache-control header in RedirectResponse constructor

…r in RedirectResponse constructor.

| Q             | A
| ------------- | ---
| Branch?       |  3.4
| Bug fix?      | yes
| New feature?  |no <!-- please update src/**/CHANGELOG.md files -->
| BC breaks?    | no     <!-- see https://symfony.com/bc -->
| Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files -->
| Tests pass?   | yes    <!-- please add some, will be required by reviewers -->
| Fixed tickets | #31862  <!-- #-prefixed issue number(s), if any -->
| License       | MIT

Perform a case-insensitive check on `$headers` in \Symfony\Component\HttpFoundation\RedirectResponse::__construct()

Commits
-------

b5e6c99 [HttpFoundation] Fixed case-sensitive handling of cache-control header in RedirectResponse constructor.
  • Loading branch information
fabpot committed Jun 5, 2019
2 parents 92e8514 + b5e6c99 commit 11f04ab
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/Symfony/Component/HttpFoundation/RedirectResponse.php
Expand Up @@ -42,7 +42,7 @@ public function __construct($url, $status = 302, $headers = [])
throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status));
}

if (301 == $status && !\array_key_exists('cache-control', $headers)) {
if (301 == $status && !\array_key_exists('cache-control', array_change_key_case($headers, \CASE_LOWER))) {
$this->headers->remove('cache-control');
}
}
Expand Down
Expand Up @@ -91,6 +91,10 @@ public function testCacheHeaders()
$this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
$this->assertTrue($response->headers->hasCacheControlDirective('max-age'));

$response = new RedirectResponse('foo.bar', 301, ['Cache-Control' => 'max-age=86400']);
$this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
$this->assertTrue($response->headers->hasCacheControlDirective('max-age'));

$response = new RedirectResponse('foo.bar', 302);
$this->assertTrue($response->headers->hasCacheControlDirective('no-cache'));
}
Expand Down

0 comments on commit 11f04ab

Please sign in to comment.