Атрибут headers
Атрибут headers класса Response позволяет задать HTTP-заголовки ответа при создании объекта. Передаётся третьим параметром в конструктор Response и представляет собой ассоциативный массив, где ключами являются названия заголовков, а значениями - их содержимое. Это удобный способ установить сразу несколько заголовков без вызова метода headers->set.
Синтаксис
new Response($content, $status, $headers);
Пример
Давайте создадим ответ с заголовком Content-Type и выведем его содержимое:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$headers = [
'Content-Type' => 'text/plain',
'X-Custom-Header' => 'custom-value',
];
$res = new Response('hello', 200, $headers);
return $res;
}
}
?>
В результате браузер получит заголовок Content-Type: text/plain и X-Custom-Header: custom-value.
Пример
Давайте установим заголовок Cache-Control для кэширования ответа на один час:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$headers = [
'Cache-Control' => 'public, max-age=3600',
];
$res = new Response('article', 200, $headers);
return $res;
}
}
?>
Результат выполнения кода для заголовков:
["Cache-Control: public, max-age=3600"]
Пример
Давайте установим заголовок Location для перенаправления пользователя на другой адрес:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$headers = [
'Location' => '/user/abcde',
];
$res = new Response('', 302, $headers);
return $res;
}
}
?>
Пользователь будет перенаправлен на адрес /user/abcde.
Пример
Давайте зададим сразу несколько заголовков для безопасности:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$headers = [
'X-Frame-Options' => 'DENY',
'X-Content-Type-Options' => 'nosniff',
'Content-Type' => 'text/html; charset=UTF-8',
];
$res = new Response('user', 200, $headers);
return $res;
}
}
?>
Результат выполнения кода для заголовков:
[
"X-Frame-Options: DENY",
"X-Content-Type-Options: nosniff",
"Content-Type: text/html; charset=UTF-8"
]
Смотрите также
-
класс
Response,
который представляет HTTP-ответ -
метод
setStatusCode,
который задаёт код состояния ответа -
метод
sendHeaders,
который отправляет заголовки клиенту -
метод
setContent,
который задаёт содержимое ответа