Как установить SameSite = нет в функции drupal setcook ie - PullRequest
0 голосов
/ 17 марта 2020

Если есть какой-либо хук или изменить то, что используется для добавления параметра «SameSite = none» в набор файлов cookie в drupal 7.

1 Ответ

0 голосов
/ 02 апреля 2020

Это довольно сложно, поскольку PHP 5 не имеет флага для SameSite: Нет; Безопасный; при использовании setcook ie () или setrawcook ie (). PHP 7 делает, однако, поскольку эти функции не экранируют точки с запятой, мы можем добавить его к флагу 'domain', и он будет установлен ...

Важно: этот хак БУДЕТ ПЕРЕРЫВ в PHP 7.3. Если вы собираетесь использовать его, по крайней мере, оберните его в проверку PHP версии, например if (PHP_VERSION_ID < 70300) { ... } else { ... }

setrawcookie('cookie_name', 'cookie_value', time() + 7700, '/', 'example.com; SameSite=none;');

Для более ранних версий PHP, вы можете установить header () напрямую:

header('Set-Cookie: cookie_name=cookie_value; SameSite=None;');

Начиная с PHP 7.3.0 метод setcook ie () поддерживает атрибут SameSite в своих параметрах и принимает None в качестве допустимого значения. См https://www.php.net/manual/en/function.setcookie.php

setcookie($name, $value, [
    'expires' => time() + 86400,
    'path' => '/',
    'secure' => true,
    'samesite' => 'None',
]);
...