【发布时间】:2020-05-26 03:59:06
【问题描述】:
我希望任何人都可以给我一些想法来解决我的问题。我正在尝试应用 SameSite cookie 来使会话工作,但它似乎不起作用。访问过的站点html:
<iframe src="https://www.example.com/test/iframe.php"></iframe>
iframe 源站点:
<?php
header('Set-Cookie: cross-site-cookie=PHPSESSID; SameSite=None; Secure');
session_start();
if(!isset($_SESSION['test'])){
echo 1;
$_SESSION['test'] = 'ee2';
}else{
echo $_SESSION['test'];
}
如果我访问该网站,我仍然会在浏览器控制台中收到A cookie associated with a cross-site resource at https://www.example.com/ was set without the SameSite attribute. It has been blocked, as Chrome now only delivers cookies with cross-site requests if they are set with SameSite=None and Secure. 消息,并且会话未保存。
我错过了什么吗?如果设置了跨站点 cookie,为什么我会在控制台中收到此消息?会话无法正常工作的原因是什么?我正在使用 php 7.1.33。如果我直接打开 iframe,它可以正常工作,如果我使用浏览器打开站点,但默认情况下没有启用 SameSite cookie 标志进行测试,它也可以正常工作。
【问题讨论】:
-
$_SESSION['test']值是多少?你设置一个cookie而不是会话。 -
是的,但我猜由于 PHPSESSID cookie,会话似乎不起作用。该值将始终为空,即使我刷新页面,值也不会存储到 $_SESSION['test'] 中。但如果我直接打开 iframe,它将存储值 'ee2'。
-
首先,调用,设置
session和cookie,然后再检查session是否设置
标签: php session cookies samesite