function HttpCache::restoreResponseBody
Restores the Response body.
1 call to HttpCache::restoreResponseBody()
- HttpCache::handle in vendor/
symfony/ http-kernel/ HttpCache/ HttpCache.php - Handles a Request to convert it to a Response.
File
-
vendor/
symfony/ http-kernel/ HttpCache/ HttpCache.php, line 623
Class
- HttpCache
- Cache provides HTTP caching.
Namespace
Symfony\Component\HttpKernel\HttpCacheCode
private function restoreResponseBody(Request $request, Response $response) : void {
if ($response->headers
->has('X-Body-Eval')) {
\assert(self::BODY_EVAL_BOUNDARY_LENGTH === 24);
ob_start();
$content = $response->getContent();
$boundary = substr($content, 0, 24);
$j = strpos($content, $boundary, 24);
echo substr($content, 24, $j - 24);
$i = $j + 24;
while (false !== ($j = strpos($content, $boundary, $i))) {
[
$uri,
$alt,
$ignoreErrors,
$part,
] = explode("\n", substr($content, $i, $j - $i), 4);
$i = $j + 24;
echo $this->surrogate
->handle($this, $uri, $alt, $ignoreErrors);
echo $part;
}
$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 does not include possibly dynamic content (ESI, SSI), so we need
// not handle the content for HEAD requests
if (!$request->isMethod('HEAD')) {
$response->setContent(file_get_contents($response->headers
->get('X-Body-File')));
}
}
else {
return;
}
$response->headers
->remove('X-Body-File');
}