Метод withSecure класса Cookie
Метод withSecure класса Cookie возвращает новый экземпляр cookie с установленным флагом Secure. По умолчанию метод принимает значение true, что означает, что браузер будет отправлять cookie только по защищённому протоколу HTTPS. Если передать false, флаг снимается, и cookie может передаваться по обычному HTTP.
Класс Cookie является неизменяемым (immutable), поэтому метод не изменяет текущий объект, а возвращает его копию с новым значением флага. Это позволяет безопасно настраивать cookie в цепочке вызовов.
Синтаксис
public function withSecure(bool $secure): static
Параметр $secure определяет, должен ли cookie передаваться только по HTTPS. Если параметр равен true, флаг Secure устанавливается. Если false - флаг снимается.
Пример
Давайте создадим cookie с флагом Secure и выведем его значение:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class CookieController extends AbstractController
{
#[Route('/cookie/secure', name: 'cookie_secure')]
public function index(): Response
{
$cookie = Cookie::create('user_token')
->withValue('abcde')
->withSecure(true);
$res = new Response('cookie set');
$res->headers->setCookie($cookie);
return $res;
}
}
?>
В результате выполнения кода браузер получит заголовок Set-Cookie с флагом Secure:
Set-Cookie: user_token=abcde; secure
Пример
Давайте снимем флаг Secure, передав в метод false:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class CookieController extends AbstractController
{
#[Route('/cookie/insecure', name: 'cookie_insecure')]
public function index(): Response
{
$cookie = Cookie::create('user_token')
->withValue('abcde')
->withSecure(false);
$res = new Response('cookie set');
$res->headers->setCookie($cookie);
return $res;
}
}
?>
В результате выполнения кода флаг Secure будет отсутствовать в заголовке:
Set-Cookie: user_token=abcde
Смотрите также
-
класс
Cookie,
который представляет собой объект cookie -
метод
create,
который создаёт новый экземпляр cookie -
метод
withValue,
который задаёт значение cookie -
метод
withHttpOnly,
который запрещает доступ к cookie из JavaScript