我创建了一个chrome扩展程序,并从popup.js中调用了PHP脚本(使用Xhttprequest)来读取cookie。像这样:
$cookie_name = "mycookie";
if(isset($_COOKIE[$cookie_name]))
{
echo $_COOKIE[$cookie_name];
}
else{
echo "nocookie";
}
但是我收到扩展错误的警告。
与(此处是我的域)的跨站点资源关联的cookie设置为未设置
SameSite
属性。如果将来的Chrome浏览器版本将Cookie设置为SameSite=None
和,则只会提供带有跨站点请求的CookieSecure
。您可以在“应用程序”>“存储”>“ 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);
遵循此问题的指示。
我也为此感到“反复无常”,但是Google Chrome Labs的Github的这个回答对我有所帮助。我将其定义到我的主文件中,并且仅在一个第三方域中有效。仍在进行测试,但我渴望通过更好的解决方案来更新此答案:)
编辑:我现在正在使用PHP 7.4,并且此语法工作正常(2020年9月):
$cookie_options = array(
'expires' => time() + 60*60*24*30,
'path' => '/',
'domain' => '.domain.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之前(如下罗伯特的回答):
setcookie('key', 'value', time()+(7*24*3600), "/; SameSite=None; Secure");
如果您的主机已经更新到7.3,则可以使用(感谢Mahn的评论):
setcookie('key', 'value', ['expires' => time()+(7*24*3600, 'path' => '/', 'domain' => 'domain.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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句