J'ai créé une extension chrome et à partir de popup.js j'ai appelé PHP (en utilisant Xhttprequest) qui lit le cookie. Comme ceci:
$cookie_name = "mycookie";
if(isset($_COOKIE[$cookie_name]))
{
echo $_COOKIE[$cookie_name];
}
else{
echo "nocookie";
}
Mais je reçois cet avertissement lors d'erreurs dans les extensions.
Un cookie associé à une ressource intersite sur (Voici mon domaine) a été défini sans l'attribut
SameSite
. Une future version de Chrome ne fournira des cookies avec des demandes intersites que s'ils sont définis avecSameSite=None
etSecure
. Vous pouvez consulter les cookies dans les outils de développement sous Application> Stockage> Cookies et voir plus de détails sur https://www.chromestatus.com/feature/5088147346030592 et https: //www.chromestatus .com/feature/5633521622188032 .
J'ai essayé de créer un cookie comme celui-ci mais cela n'a pas aidé.
setcookie($cookie_name,$cookie_value, time() + 3600*24, "/;samesite=None ","mydomain.com", 1);
En suivant les instructions de this question.
Je suis également dans un "essai et erreur" pour cela, mais cette réponse de Google Chrome Labs 'Github m'a un peu aidé. Je l'ai défini dans mon fichier principal et cela a fonctionné - eh bien, pour un seul domaine tiers. Toujours en train de faire des tests, mais je suis impatient de mettre à jour cette réponse avec une meilleure solution :)
Si vous avez PHP jusqu'au 7.2, comme mon serveur le fait:
header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
Ou si votre hôte est déjà mis à jour en 7.3, vous pouvez utiliser:
setcookie('cross-site-cookie', 'name', ['samesite' => 'None', 'secure' => true]);
Une autre chose que vous pouvez essayer de vérifier les cookies est d'activer le drapeau ci-dessous qui, selon leurs propres mots, "ajoutera des messages d'avertissement de console pour chaque cookie potentiellement affecté par cette modification":
chrome://flags/#cookie-deprecation-messages
Voir le code complet sur: https://github.com/GoogleChromeLabs/samesite-examples/blob/master/php.md , ils ont le code pour same-site-cookies
aussi.
À mesure que la nouvelle fonctionnalité arrive, SameSite=None
les cookies doivent également être marqués comme Secure
ou ils seront rejetés.
On peut trouver plus d'informations sur le changement sur mises à jour de chrome et sur ce article de blog
Remarque : pas tout à fait directement lié à la question, mais pourrait être utile pour d'autres qui ont atterri ici car c'était ma préoccupation au début lors du développement de mon site Web:
si vous voyez l'avertissement de la question qui répertorie certains sites tiers (dans mon cas, c'était google.com, hein) - cela signifie qu'ils doivent corrigez-le et cela n'a rien à voir avec votre site. Bien sûr, sauf si l'avertissement mentionne votre site, auquel cas l'ajout de Secure
devrait le corriger.
>= 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>";
J'ai fini par corriger notre Ubuntu 18.04/Apache 2.4.29/PHP 7.2 installation pour Chrome 80 en installant mod_headers:
a2enmod headers
Ajout de la directive suivante à nos configurations Apache VirtualHost:
Header edit Set-Cookie ^(.*)$ "$1; Secure; SameSite=None"
Et redémarrer Apache:
service Apache2 restart
En examinant les documents ( http://www.balkangreenfoundation.org/manual/en/mod/mod_headers.html ) j'ai remarqué que la condition "toujours" a certaines situations où elle ne fonctionne pas du même pool d'en-têtes de réponse. Donc, ne pas utiliser "toujours" est ce qui a fonctionné pour moi avec PHP mais les docs suggèrent que si vous voulez couvrir toutes vos bases, vous pouvez ajouter la directive avec et sans "toujours". J'ai pas testé ça.