[HttpKernel] fixed Content-Length header when using ESI tags (closes #2623)
This commit is contained in:
parent
d67fbe9e48
commit
f7c5bf1db2
@ -585,6 +585,9 @@ class HttpCache implements HttpKernelInterface
|
||||
|
||||
$response->setContent(ob_get_clean());
|
||||
$response->headers->remove('X-Body-Eval');
|
||||
if (!$response->headers->has('Transfer-Encoding')) {
|
||||
$response->headers->set('Content-Length', strlen($response->getContent()));
|
||||
}
|
||||
} elseif ($response->headers->has('X-Body-File')) {
|
||||
$response->setContent(file_get_contents($response->headers->get('X-Body-File')));
|
||||
} else {
|
||||
|
@ -978,4 +978,30 @@ class HttpCacheTest extends HttpCacheTestCase
|
||||
$this->assertTrue($this->response->headers->hasCacheControlDirective('private'));
|
||||
$this->assertTrue($this->response->headers->hasCacheControlDirective('no-cache'));
|
||||
}
|
||||
|
||||
public function testEsiRecalculateContentLengthHeader()
|
||||
{
|
||||
$responses = array(
|
||||
array(
|
||||
'status' => 200,
|
||||
'body' => '<esi:include src="/foo" />',
|
||||
'headers' => array(
|
||||
'Content-Length' => 26,
|
||||
'Cache-Control' => 's-maxage=300',
|
||||
'Surrogate-Control' => 'content="ESI/1.0"',
|
||||
),
|
||||
),
|
||||
array(
|
||||
'status' => 200,
|
||||
'body' => 'Hello World!',
|
||||
'headers' => array(),
|
||||
),
|
||||
);
|
||||
|
||||
$this->setNextResponses($responses);
|
||||
|
||||
$this->request('GET', '/', array(), array(), true);
|
||||
$this->assertEquals('Hello World!', $this->response->getContent());
|
||||
$this->assertEquals(12, $this->response->headers->get('Content-Length'));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user