【问题标题】:How to set SameSite=none in drupal setcookie function如何在 drupal setcookie 函数中设置 SameSite=none
【发布时间】:2020-03-17 05:58:16
【问题描述】:

如果有任何钩子或更改用于在 drupal 7 的设置 cookie 中添加“SameSite=none”参数。

【问题讨论】:

  • 您能在这里提供更多信息吗?您目前如何设置 cookie?您使用的是什么版本的 PHP?返回给浏览器的 Set-cookie 标头是什么。请记住,如果您希望在跨站点/第三方上下文中发送您的 cookie,则需要设置 SameSite=None;Secure。有关在普通 PHP 中设置 cookie 的说明,请参阅:github.com/GoogleChromeLabs/samesite-examples/blob/master/… 有关SameSite 更改的信息,请参阅web.dev/samesite-cookies-explained

标签: drupal drupal-7


【解决方案1】:

这个有点棘手,因为 PHP 5 没有 SameSite:None 的标志;安全的;使用 setcookie() 或 setrawcookie() 时。 PHP 7 可以,但是由于这些函数不会转义分号,我们可以将其添加到 'domain' 标志中,它会被设置...

重要提示:此 hack 将在 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 开始,setcookie() 方法在其选项中支持 SameSite 属性,并将接受 None 作为有效值。见https://www.php.net/manual/en/function.setcookie.php

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

【讨论】:

  • 感谢您的回答,我正在使用托管在 Acquia 上的 Drupal 7,使用 PHP 7.2.2;我真的是 CMS 新手,您能指出我需要在哪个文件中添加“setrawcookie”功能吗?
  • 感谢您的回答。这里没有使用 Drupal,但遇到了相同站点的问题,并尝试在 WP 中设置 cookie,同时在其他地方获取它。尝试了各种提示.. 从来没有得到任何地方,但你的答案(PHP 7.3.0 之一)解决了我的问题!点赞!!
猜你喜欢
  • 2020-09-01
  • 2021-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多