首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修正“将SameSite cookie设置为无”警告?

问如何修正“将SameSite cookie设置为无”警告?
EN

Stack Overflow用户
提问于 2019-10-01 20:39:10
回答 6查看 204.4K关注 0票数 70

我创建了一个chrome扩展,并从popup.js中调用PHP (使用Xhttprequest)读取cookie。如下所示:

代码语言:javascript
复制
$cookie_name = "mycookie";

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

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

在没有SameSite属性的情况下,设置了与跨站点资源相关的cookie (这里是我的域)。Chrome的未来版本只有在SameSite=None和Secure的情况下,才会提供带有跨站点请求的cookie。您可以在Application>Storage>Cookies下查看开发人员工具中的cookie,并在https://www.chromestatus.com/feature/5088147346030592和https://www.chromestatus.com/feature/5633521622188032上查看更多详细信息。

我试着做这样的曲奇,但没什么用。

代码语言:javascript
复制
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);

按照这问题的说明。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-10-04 14:32:08

我也对此感到“试错”,但谷歌Chrome的GitHub给了我一点帮助。我把它定义到我的主文件中,它起作用了--嗯,只有一个第三方域。仍然在进行测试,但我渴望用更好的解决方案更新这个答案:)

我现在使用的是PHP7.4,这个语法运行良好(2020年9月):

代码语言:javascript
复制
$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);

如果您有PHP7.2或更低的(如下面所述):

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

如果您的主机已经更新为PHP7.3,您可以使用(感谢Mahn的评论):

代码语言:javascript
复制
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的代码。

票数 43
EN

Stack Overflow用户

发布于 2019-10-14 22:08:08

随着新特性的到来,SameSite=None cookie也必须标记为Secure,否则将被拒绝。

您可以在铬更新和这个博客帖子上找到更多有关更改的信息。

Note:与这个问题不完全相关,但可能对登陆这里的其他人有用,因为在我的网站开发过程中,这首先是我关心的问题:

如果你看到来自问题的警告,列出了一些第三方网站(在我的例子中是google.com,呵呵)-这意味着他们需要修复它,这与你的网站无关。当然,除非警告提到您的站点,否则添加Secure应该会修复它。

票数 32
EN

Stack Overflow用户

发布于 2020-03-17 05:23:35

代码语言:javascript
复制
>= 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>";
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58191969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档