Dan*_*ous 21 php cookies session session-cookies php-7.3
据这里的文章https://php.watch/articles/PHP-Samesite-cookies和PHP documenation在https://www.php.net/manual/en/session.security.ini.php,只有2 PHP 7.3 中添加的此新功能的可能配置选项:
然而,根据 Chrome 控制台,这需要设置为“无”:
与 URL 上的跨站点资源关联的 cookie 设置为没有该
SameSite
属性。它已被阻止,因为 Chrome 现在仅在设置了SameSite=None
和 的情况下才提供具有跨站点请求的 cookieSecure
。您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在 URL 和 URL 中查看更多详细信息。
因此,我无法再设置跨站点 cookie。解决方法是什么?
Ano*_*ous 30
您可以使用 将值设置为“无” ini_set
。使用该函数时,不会检查该值是否受支持:
ini_set('session.cookie_samesite', 'None');
session_start();
Run Code Online (Sandbox Code Playgroud)
session_set_cookie_params
也可以设置:
session_set_cookie_params(['samesite' => 'None']);
session_start();
Run Code Online (Sandbox Code Playgroud)
php.ini 支持的错误报告在这里。
正如@shrimpwagon在下面的评论中所说的那样,session.cookie_secure
必须是true
这样才能起作用。PHP 不需要它,但浏览器需要。
小智 9
ini_set('session.cookie_secure', "1"); ini_set('session.cookie_httponly', "1"); ini_set('session.cookie_samesite','None'); session_start();
phpinfo 中的 php 7.4 相同站点
phpinfo 中不存在 php 7.2 Samesite
$currentCookieParams = session_get_cookie_params();
$cookie_domain= 'your domain';
if (PHP_VERSION_ID >= 70300) {
session_set_cookie_params([
'lifetime' => $currentCookieParams["lifetime"],
'path' => '/',
'domain' => $cookie_domain,
'secure' => "1",
'httponly' => "1",
'samesite' => 'None',
]);
} else {
session_set_cookie_params(
$currentCookieParams["lifetime"],
'/; samesite=None',
$cookie_domain,
"1",
"1"
);
}
session_start();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
28667 次 |
最近记录: |