Новое в Symfony 5.1: «безопасный» HTTP-параметр

Некоторые веб-сайты имеют «безопасный» режим, чтобы помочь тем, кто не хочет подвергаться воздействию контента, против которого они могут возражать. Вместо настройки этой опции для каждого веб-сайта браузер может указать ваши безопасные предпочтения для всех веб-сайтов.

Эта функция полностью объяснена в документе RFC 8674. Вообще говоря, браузеры, запрашивающие безопасный контент, добавляют заголовок Prefer: safe HTTP и серверы, соблюдающие его, включают в свои ответы следующие заголовки: Preference-Applied: safe и Vary: Prefer.

В Symfony 5.1 добавили поддержку этой функции в компонент HttpFoundation. Во-первых, вы можете проверить, запрашивал ли пользователь безопасный контент:

// $request is an instance of Symfony\Component\HttpFoundation\Request
if ($request->preferSafeContent()) {
    // ...
}

Если вы выполнили безопасный запрос, используйте метод setContentSafe() в ответе, чтобы добавить необходимые заголовки HTTP:

use Symfony\Component\HttpFoundation\Response;

$response = new Response('...');
$response->setContentSafe();

Важно помнить, что спецификация RFC 8674 не определяет то, что можно рассматривать как «безопасный контент». Каждый веб-сайт решает, какое из их содержимого в какой-то мере нежелательно или небезопасно.