Skip to content

Commit 11f04ab

Browse files
committed
bug symfony#31863 [HttpFoundation] Fixed case-sensitive handling of cache-control 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 | symfony#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.
2 parents 92e8514 + b5e6c99 commit 11f04ab

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

src/Symfony/Component/HttpFoundation/RedirectResponse.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public function __construct($url, $status = 302, $headers = [])
4242
throw new \InvalidArgumentException(sprintf('The HTTP status code is not a redirect ("%s" given).', $status));
4343
}
4444

45-
if (301 == $status && !\array_key_exists('cache-control', $headers)) {
45+
if (301 == $status && !\array_key_exists('cache-control', array_change_key_case($headers, \CASE_LOWER))) {
4646
$this->headers->remove('cache-control');
4747
}
4848
}

src/Symfony/Component/HttpFoundation/Tests/RedirectResponseTest.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ public function testCacheHeaders()
9191
$this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
9292
$this->assertTrue($response->headers->hasCacheControlDirective('max-age'));
9393

94+
$response = new RedirectResponse('foo.bar', 301, ['Cache-Control' => 'max-age=86400']);
95+
$this->assertFalse($response->headers->hasCacheControlDirective('no-cache'));
96+
$this->assertTrue($response->headers->hasCacheControlDirective('max-age'));
97+
9498
$response = new RedirectResponse('foo.bar', 302);
9599
$this->assertTrue($response->headers->hasCacheControlDirective('no-cache'));
96100
}

0 commit comments

Comments
 (0)