如何修复“将SameSite Cookie设置为无”警告?Chrome扩展程序

Dan*_*vic 23 php cookies google-chrome-extension

我创建了一个chrome扩展程序,并从popup.js中调用了读取cookie的PHP脚本(使用Xhttprequest)。像这样:

$cookie_name = "mycookie";

if(isset($_COOKIE[$cookie_name]))
{
    echo $_COOKIE[$cookie_name];
}
else{
    echo "nocookie";
}
Run Code Online (Sandbox Code Playgroud)

但是我收到扩展错误的警告。

与(此处是我的域)的跨站点资源关联的cookie设置为未设置SameSite属性。如果将来的Chrome浏览器版本将cookie设置为SameSite=None和,则仅会提供带有跨站点请求的cookie Secure。您可以在“应用程序”>“存储”>“ Cookies”下的开发人员工具中查看Cookie,并在https://www.chromestatus.com/feature/5088147346030592https://www.chromestatus.com/feature/5633521622188032上查看更多详细信息。

我试图创建这样的cookie,但没有帮助。

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

遵循问题的指示。

Rob*_*ene 11

>= PHP 7.3

setcookie('key', 'value', ['samesite' => 'None', 'secure' => true]);

< PHP 7.3

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

Emitting javascript

echo "<script>document.cookie('key=value; SameSite=None; Secure');</script>";
Run Code Online (Sandbox Code Playgroud)


Dim*_*nte 7

我对此也处于“反复试验”中,但是Google Chrome Labs的Github的这个回答对我有所帮助。我将其定义到我的主文件中,并且仅在一个第三方域中有效。仍在进行测试,但我渴望通过更好的解决方案来更新此答案:)

如果您的PHP在7.2之前,就像我的服务器那样:

header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');

或者,如果您的主机已经更新到7.3,则可以使用:

setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);

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

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

请参阅以下网址的完整代码:https : //github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md,他们也有相应的代码same-site-cookies


vir*_* us 7

随着新功能的出现,SameSite=NoneCookie也必须标记为Secure,否则将被拒绝。

可以在铬更新和本博客文章中找到有关变化的更多信息。

注意:与问题没有直接关系,但是对其他人来说可能很有用,因为在开发我的网站时首先是我的关注:

如果您从问题中看到警告,其中列出了一些第三方网站(在我的情况下是google.com,是吧)-这意味着他们需要对其进行修复,而与您的网站无关。当然,除非警告中提到您的网站,否则在这种情况下添加即可Secure解决该问题。

  • 谢谢你,我不明白为什么我的饼干没有被设置。 (2认同)
  • 该死的。我花了一整天的时间试图找出为什么 Samesite 在我们的 Symfony 项目中不起作用。事实证明我还需要将安全 cookie 属性设置为 true 。谢谢! (2认同)