public function Response::prepare

Prepares the Response before it is sent to the client.

This method tweaks the Response to ensure that it is compliant with RFC 2616. Most of the changes are based on the Request that is "associated" with this Response.

Parameters

Request $request A Request instance:

Return value

Response The current response.

2 calls to Response::prepare()
AjaxResponse::prepare in drupal/core/lib/Drupal/Core/Ajax/AjaxResponse.php
Sets the response's data to be the array of AJAX commands.
StreamedResponse::prepare in drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/StreamedResponse.php
Prepares the Response before it is sent to the client.
2 methods override Response::prepare()
AjaxResponse::prepare in drupal/core/lib/Drupal/Core/Ajax/AjaxResponse.php
Sets the response's data to be the array of AJAX commands.
StreamedResponse::prepare in drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/StreamedResponse.php
Prepares the Response before it is sent to the client.

File

drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Response.php, line 204

Class

Response
Response represents an HTTP response.

Namespace

Symfony\Component\HttpFoundation

Code

public function prepare(Request $request) {
  $headers = $this->headers;
  if ($this
    ->isInformational() || in_array($this->statusCode, array(
    204,
    304,
  ))) {
    $this
      ->setContent(null);
  }

  // Content-type based on the Request
  if (!$headers
    ->has('Content-Type')) {
    $format = $request
      ->getRequestFormat();
    if (null !== $format && ($mimeType = $request
      ->getMimeType($format))) {
      $headers
        ->set('Content-Type', $mimeType);
    }
  }

  // Fix Content-Type
  $charset = $this->charset ?: 'UTF-8';
  if (!$headers
    ->has('Content-Type')) {
    $headers
      ->set('Content-Type', 'text/html; charset=' . $charset);
  }
  elseif (0 === strpos($headers
    ->get('Content-Type'), 'text/') && false === strpos($headers
    ->get('Content-Type'), 'charset')) {

    // add the charset
    $headers
      ->set('Content-Type', $headers
      ->get('Content-Type') . '; charset=' . $charset);
  }

  // Fix Content-Length
  if ($headers
    ->has('Transfer-Encoding')) {
    $headers
      ->remove('Content-Length');
  }
  if ('HEAD' === $request
    ->getMethod()) {

    // cf. RFC2616 14.13
    $length = $headers
      ->get('Content-Length');
    $this
      ->setContent(null);
    if ($length) {
      $headers
        ->set('Content-Length', $length);
    }
  }
  return $this;
}