public function ServerBag::getHeaders

Gets the HTTP headers.

Return value

string

File

drupal/core/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/ServerBag.php, line 28

Class

ServerBag
ServerBag is a container for HTTP headers from the $_SERVER variable.

Namespace

Symfony\Component\HttpFoundation

Code

public function getHeaders() {
  $headers = array();
  foreach ($this->parameters as $key => $value) {
    if (0 === strpos($key, 'HTTP_')) {
      $headers[substr($key, 5)] = $value;
    }
    elseif (in_array($key, array(
      'CONTENT_LENGTH',
      'CONTENT_MD5',
      'CONTENT_TYPE',
    ))) {
      $headers[$key] = $value;
    }
  }
  if (isset($this->parameters['PHP_AUTH_USER'])) {
    $headers['PHP_AUTH_USER'] = $this->parameters['PHP_AUTH_USER'];
    $headers['PHP_AUTH_PW'] = isset($this->parameters['PHP_AUTH_PW']) ? $this->parameters['PHP_AUTH_PW'] : '';
  }
  else {

    /*
     * php-cgi under Apache does not pass HTTP Basic user/pass to PHP by default
     * For this workaround to work, add these lines to your .htaccess file:
     * RewriteCond %{HTTP:Authorization} ^(.+)$
     * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
     *
     * A sample .htaccess file:
     * RewriteEngine On
     * RewriteCond %{HTTP:Authorization} ^(.+)$
     * RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
     * RewriteCond %{REQUEST_FILENAME} !-f
     * RewriteRule ^(.*)$ app.php [QSA,L]
     */
    $authorizationHeader = null;
    if (isset($this->parameters['HTTP_AUTHORIZATION'])) {
      $authorizationHeader = $this->parameters['HTTP_AUTHORIZATION'];
    }
    elseif (isset($this->parameters['REDIRECT_HTTP_AUTHORIZATION'])) {
      $authorizationHeader = $this->parameters['REDIRECT_HTTP_AUTHORIZATION'];
    }

    // Decode AUTHORIZATION header into PHP_AUTH_USER and PHP_AUTH_PW when authorization header is basic
    if (null !== $authorizationHeader && 0 === stripos($authorizationHeader, 'basic')) {
      $exploded = explode(':', base64_decode(substr($authorizationHeader, 6)));
      if (count($exploded) == 2) {
        list($headers['PHP_AUTH_USER'], $headers['PHP_AUTH_PW']) = $exploded;
      }
    }
  }

  // PHP_AUTH_USER/PHP_AUTH_PW
  if (isset($headers['PHP_AUTH_USER'])) {
    $headers['AUTHORIZATION'] = 'Basic ' . base64_encode($headers['PHP_AUTH_USER'] . ':' . $headers['PHP_AUTH_PW']);
  }
  return $headers;
}