Метод withSameSite
Метод withSameSite класса Cookie
создаёт новый объект cookie с изменённым
атрибутом SameSite. Этот атрибут определяет,
будет ли cookie отправляться при межсайтовых
запросах. Первым параметром передаётся
значение атрибута SameSite: 'lax',
'strict' или 'none'.
Метод не изменяет исходный объект, а возвращает его копию с новым значением. Это позволяет строить цепочки вызовов для последовательной настройки cookie.
Синтаксис
public function withSameSite(?string $sameSite): static
Пример
Давайте создадим cookie и установим
атрибут SameSite в значение 'lax':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
class CookieController extends AbstractController
{
public function index(): Response
{
$cookie = Cookie::create('token')
->withValue('abcde')
->withSameSite('lax');
$res = $cookie->getSameSite();
return new Response($res);
}
}
?>
Результат выполнения кода:
"lax"
Пример
Давайте установим атрибут SameSite
в значение 'strict':
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
class CookieController extends AbstractController
{
public function index(): Response
{
$cookie = Cookie::create('session')
->withValue('user')
->withSameSite('strict');
$res = $cookie->getSameSite();
return new Response($res);
}
}
?>
Результат выполнения кода:
"strict"
Пример
Давайте установим атрибут SameSite
в значение 'none'. Обратите внимание,
что для 'none' cookie должен быть
помечен как Secure:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\Response;
class CookieController extends AbstractController
{
public function index(): Response
{
$cookie = Cookie::create('token')
->withValue('abcde')
->withSecure(true)
->withSameSite('none');
$res = $cookie->getSameSite();
return new Response($res);
}
}
?>
Результат выполнения кода:
"none"
Смотрите также
-
класс
Cookie,
который представляет объект cookie -
метод
create,
который создаёт новый экземпляр cookie -
метод
withSecure,
который управляет атрибутом Secure -
метод
withHttpOnly,
который управляет атрибутом HttpOnly