如何修复“将同一网站cookie设置为无”警告?

2022-08-30 08:52:41

我创建了一个chrome扩展程序,从弹出窗口.js我调用了PHP脚本(使用Xhttprequest)来读取cookie。喜欢这个:

$cookie_name = "mycookie";

if(isset($_COOKIE[$cookie_name]))
{
    echo $_COOKIE[$cookie_name];
}
else{
    echo "nocookie";
}

但是我在扩展错误时收到此警告。

与 (这里是我的域) 的跨站点资源关联的 Cookie 在没有属性的情况下设置。Chrome 的未来版本将仅提供具有跨站点请求的 Cookie,前提是它们设置了 和 。您可以在开发人员工具中的“应用程序>存储> Cookie”下查看 Cookie,并在 https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032 中查看更多详细信息。SameSiteSameSite=NoneSecure

我试图创建一个这样的饼干,但它没有帮助。

setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);

按照此问题中的说明进行操作。


答案 1

我也在为此进行“试错”,但谷歌Chrome Labs的GitHub的这个答案对我帮助很大。我将其定义到我的主文件中,并且它有效 - 好吧,仅适用于一个第三方域。仍在进行测试,但我渴望用更好的解决方案更新这个答案,:)

我现在使用的是 PHP 7.4,并且此语法运行良好(2020 年 9 月):

$cookie_options = array(
  'expires' => time() + 60*60*24*30,
  'path' => '/',
  'domain' => '.example.com', // leading dot for compatibility or use subdomain
  'secure' => true, // or false
  'httponly' => false, // or false
  'samesite' => 'None' // None || Lax || Strict
);

setcookie('cors-cookie', 'my-site-cookie', $cookie_options);

如果你有 PHP 7.2 或更低版本(正如 Robert 在下面回答的):

setcookie('key', 'value', time()+(7*24*3600), "/; SameSite=None; Secure");

如果您的主机已经更新到 PHP 7.3,您可以使用(感谢 Mahn 的评论):

setcookie('cookieName', 'cookieValue', [
  'expires' => time()+(7*24*3600,
  'path' => '/',
  'domain' => 'example.com',
  'samesite' => 'None',
  'secure' => true,
  'httponly' => true
]);

您可以尝试检查cookie的另一件事是启用下面的标志,用他们自己的话说,“将为可能受此更改影响的每个cookie添加控制台警告消息”:

chrome://flags/#cookie-deprecation-messages

请参阅整个代码:https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md,他们也有代码。same-site-cookies


答案 2

随着新功能的推出,Cookie也必须标记为,否则它们将被拒绝。SameSite=NoneSecure

人们可以在这篇博客文章中找到有关铬更新变化的更多信息

注意:与这个问题没有直接关系,但对于其他登陆这里的人来说可能是有用的,因为这是我在网站开发过程中首先关注的问题:

如果您看到列出一些第三方网站的问题警告(在我的情况下,它是 google.com,呵呵) - 这意味着他们需要修复它,这与您的网站无关。当然,除非警告提到您的网站,在这种情况下,添加应该可以修复它。Secure


推荐