Заголовки HTTP-ответа

Для управления заголовками HTTP-ответа убедитесь, что ваш объект наследует класс Imhotep\Http\Response. Заголовки доступны через публичное свойство headers которое реализует класс Imhotep\Http\HeaderBag, а также через специализированные методы самого объекта Response.

Установка заголовков

$response = response()
    ->setHeader('X-Custom', 'Value')
    ->setHeader('Content-Type', 'text/plain')
    ->setHeaders([
        'X-One' => '1',
        'X-Two' => '2',
    ]);
PHP

Проверка наличия заголовка

Чтобы проверить, установлен ли определённый заголовок, используйте метод hasHeader():

if ($response->hasHeader('Content-Type')) {
    // Заголовок установлен
}

// Альтернативный вариант, через HeaderBag
$response->headers->has('Content-Type');
PHP

Получение всех или нескольких заголовков

Для получения всех заголовков HTTP-ответа вызовите метод headers() без аргументов:

$headers = $response->headers();

// Альтернативный вариант, через HeaderBag
$headers = $response->headers->all();
PHP

Чтобы получить только определённые заголовки, передайте их в метод headers() в качестве аргументов. Метод вернёт ассоциативный массив, где для отсутствующих заголовков будет указано значение null:

$headers = $response->headers(['Content-Type', 'X-Custom', 'No-Header']);

// Так тоже можно
$headers = $response->headers('Content-Type', 'X-Custom', 'No-Header');

// Альтернативный вариант, через HeaderBag
$headers = $response->headers->only(['Content-Type', 'X-Custom', 'No-Header']);
PHP

Получение конкретного заголовка

Для получения значения конкретного заголовка используйте метод header(). Если заголовок не установлен, метод вернёт null. Вы можете указать значение по умолчанию вторым аргументом:

$result = $response->header('X-Custom', 'default-value');

// Альтернативный вариант, через HeaderBag
$result = $response->headers->get('X-Custom', 'default-value');
PHP

Удаление заголовка

Чтобы удалить ранее установленный заголовок, воспользуйтесь методом removeHeader():

$response->removeHeader('X-Custom');

// Альтернативный вариант, через HeaderBag
$response->headers->remove('X-Custom');
PHP

Управление кэшированием

Установка времени кэширования

return response('Hello')
    ->setExpires(new DateTime('+1 hour'))
    ->setLastModified(new DateTime('2024-01-01'));
PHP

ETag

return response('Hello')->setEtag(md5('Hello'));
PHP

Cache-Control

// Полное отключение кэша
return response('Hello')->disableCache();

// Кэширование в браузере на 1 час
return response('Hello')->enableBrowserCache(3600);

// Кэширование в CDN
return response('Hello')->enableCdnCache(3600, 86400);
PHP