diff --git a/Slim/ResponseEmitter.php b/Slim/ResponseEmitter.php index 72668c429..58a0a4eef 100644 --- a/Slim/ResponseEmitter.php +++ b/Slim/ResponseEmitter.php @@ -58,7 +58,7 @@ public function emit(ResponseInterface $response): void private function emitHeaders(ResponseInterface $response): void { foreach ($response->getHeaders() as $name => $values) { - $first = $name !== 'Set-Cookie'; + $first = strtolower($name) !== 'set-cookie'; foreach ($values as $value) { $header = sprintf('%s: %s', $name, $value); header($header, $first); diff --git a/tests/ResponseEmitterTest.php b/tests/ResponseEmitterTest.php index 968e13229..ab443802a 100644 --- a/tests/ResponseEmitterTest.php +++ b/tests/ResponseEmitterTest.php @@ -148,14 +148,14 @@ public function testResponseDoesNotReplacePreviouslySetSetCookieHeaders() { $response = $this ->createResponse(200, 'OK') - ->withHeader('Set-Cookie', 'foo=bar') + ->withHeader('set-cOOkie', 'foo=bar') ->withAddedHeader('Set-Cookie', 'bar=baz'); $responseEmitter = new ResponseEmitter(); $responseEmitter->emit($response); $expectedStack = [ - ['header' => 'Set-Cookie: foo=bar', 'replace' => false, 'status_code' => null], - ['header' => 'Set-Cookie: bar=baz', 'replace' => false, 'status_code' => null], + ['header' => 'set-cOOkie: foo=bar', 'replace' => false, 'status_code' => null], + ['header' => 'set-cOOkie: bar=baz', 'replace' => false, 'status_code' => null], ['header' => 'HTTP/1.1 200 OK', 'replace' => true, 'status_code' => 200], ]; @@ -179,7 +179,7 @@ public function testAvoidReadFromSlowStreamAccordingStatus() $response = $this ->createResponse(204, 'No content') ->withBody($body); - + $responseEmitter = new ResponseEmitter(); $responseEmitter->emit($response);