我创建了一个 chrome 扩展,并从 popup.js 我调用了读取 cookie 的 PHP 脚本(使用 Xhttprequest)。像这样:
$cookie_name = "mycookie";
if(isset($_COOKIE[$cookie_name]))
{
echo $_COOKIE[$cookie_name];
}
else{
echo "nocookie";
}
但是我在扩展错误时收到此警告。
与(Here is my domain)的跨站点资源关联的 cookie 设置为没有
SameSite
属性。如果设置了SameSite=None
和Secure
,未来的 Chrome 版本将只提供带有跨站点请求的 cookie。您可以在应用程序>存储>Cookies 下的开发人员工具中查看 cookie,并在 https://www.chromestatus.com/feature/5088147346030592 和 https://www.chromestatus.com/feature/5633521622188032 中查看更多详细信息。
我试图创建一个这样的cookie,但没有帮助。
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);
按照 这个 问题的说明。
原文由 Danilo Ivanovic 发布,翻译遵循 CC BY-SA 4.0 许可协议
我也在为此“反复试验”,但来自 Google Chrome Labs 的 GitHub 的这个答案对我有所帮助。我将它定义到我的主文件中并且它工作 - 很好,只适用于一个第三方域。仍在进行测试,但我渴望用更好的解决方案更新这个答案:)
我现在使用的是 PHP 7.4,这种语法运行良好(2020 年 9 月):
如果您有 PHP 7.2 或更低版本(如下 Robert 的回答):
setcookie('key', 'value', time()+(7*24*3600), "/; SameSite=None; Secure");
如果您的主机已经更新到 PHP 7.3 ,您可以使用(感谢 Mahn 的评论):
您可以尝试检查 cookie 的另一件事是启用下面的标志,用他们自己的话来说,它“将为可能受此更改影响的每个 cookie 添加控制台警告消息”:
chrome://flags/#cookie-deprecation-messages
查看完整代码: https ://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md,他们也有
same-site-cookies
的代码。