[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->setContent(ob_get_clean());
|
||||||
$response->headers->remove('X-Body-Eval');
|
$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')) {
|
} elseif ($response->headers->has('X-Body-File')) {
|
||||||
$response->setContent(file_get_contents($response->headers->get('X-Body-File')));
|
$response->setContent(file_get_contents($response->headers->get('X-Body-File')));
|
||||||
} else {
|
} else {
|
||||||
|
@ -978,4 +978,30 @@ class HttpCacheTest extends HttpCacheTestCase
|
|||||||
$this->assertTrue($this->response->headers->hasCacheControlDirective('private'));
|
$this->assertTrue($this->response->headers->hasCacheControlDirective('private'));
|
||||||
$this->assertTrue($this->response->headers->hasCacheControlDirective('no-cache'));
|
$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