symfony Обработка событий: Добавить заголовок во всех ответы (header, response)
Primary tabs
Скорее всего надо как минимум слушать событие отдачи Responce или что-то вроде того, как как именно это сделать, тут пока не выяснялось (ограничились отдачи Response с нужными заголовками в функции ответа, размещенной в родительском контроллере для всех контроллеров, которым нужно было отдавать дополнительный заголовок).
То же самое было сделано и в методах аутентификатора для обработки запроса типа OPTIONS
ПРИМЕЧАНИЕ: см. также разрешение OPTIONS для все методов.
Возможное решение
Добавляем обработчик события ответа src/EventListener/CoreEventListener.php с содержимым вроде:
<?php namespace App\EventListener; use App\Security\CorsSettings; use Symfony\Component\HttpKernel\Event\ResponseEvent; final class CoreEventListener { public function onKernelResponse(ResponseEvent $event): void { $response = $event->getResponse(); // Добавляем сразу массив заголовков: $response->headers->add([ 'НазваниеЗаголовка1' => 'Значение', 'НазваниеЗаголовка2' => 'Значение', ]); // Или можно добавить один заголовок: $response->headers->set(" 'НазваниеЗаголовка", "Значение"); } }
Далее регистрируем наш обработчик событий в config/services.yaml:
# Register EventListener onKernelResponse App\EventListener\CoreEventListener: tags: - { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
Порядок выполнения обработчиков - "почему response неполный"
В официальной доке по этому поводу написано:
There is an optional attribute for the kernel.event_listener tag called priority, which is a positive or negative integer that defaults to 0 and it controls the order in which listeners are executed (the higher the number, the earlier a listener is executed). This is useful when you need to guarantee that one listener is executed before another. The priorities of the internal Symfony listeners usually range from -256 to 256 but your own listeners can use any positive or negative integer.
-- на деле число может и выходить за диапазон от -256 до 256, напр. как в случае с SessionListener.
Что почитать/источники
- How to add custom headers to every single response (globally) in Symfony 5 https://ourcodeworld.com/articles/read/1...
- Events and Event Listeners: https://symfony.com/doc/current/event_di...
- https://symfony.com/doc/current/referenc...
- https://stackoverflow.com/a/59715685
- Log in to post comments
- 1585 reads