Заголовки 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',
]);
Проверка наличия заголовка
Чтобы проверить, установлен ли определённый заголовок, используйте метод hasHeader():
if ($response->hasHeader('Content-Type')) {
// Заголовок установлен
}
// Альтернативный вариант, через HeaderBag
$response->headers->has('Content-Type');
Получение всех или нескольких заголовков
Для получения всех заголовков HTTP-ответа вызовите метод headers() без аргументов:
$headers = $response->headers();
// Альтернативный вариант, через HeaderBag
$headers = $response->headers->all();
Чтобы получить только определённые заголовки, передайте их в метод 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']);
Получение конкретного заголовка
Для получения значения конкретного заголовка используйте метод header(). Если заголовок не установлен, метод вернёт null. Вы можете указать значение по умолчанию вторым аргументом:
$result = $response->header('X-Custom', 'default-value');
// Альтернативный вариант, через HeaderBag
$result = $response->headers->get('X-Custom', 'default-value');
Удаление заголовка
Чтобы удалить ранее установленный заголовок, воспользуйтесь методом removeHeader():
$response->removeHeader('X-Custom');
// Альтернативный вариант, через HeaderBag
$response->headers->remove('X-Custom');
Управление кэшированием
Установка времени кэширования
return response('Hello')
->setExpires(new DateTime('+1 hour'))
->setLastModified(new DateTime('2024-01-01'));
ETag
return response('Hello')->setEtag(md5('Hello'));
Cache-Control
// Полное отключение кэша
return response('Hello')->disableCache();
// Кэширование в браузере на 1 час
return response('Hello')->enableBrowserCache(3600);
// Кэширование в CDN
return response('Hello')->enableCdnCache(3600, 86400);