PHP : résoudre l'erreur Cookie was set without the SameSite attribute dans Chrome ?

Les cookies sont des éléments très utilisés dans les navigateurs web. Ils permettent à des sites internet ou des extensions de stocker des éléments dans la mémoire du navigateur. De cette manière, on peut sauvegarder des éléments dont on pourra se servir ultérieurement lorsque l'internaute reviendra utiliser notre site internet ou utilisera de nouveau l'extension. L'utilisation des cookies est strictement encadrée pour ne pas en abuser. Le message d'erreur "Cookie was set without the SameSite attribute dans Chrome" est lié au paramétrage de votre cookie.

Lors de l'utilisation des cookies, le navigateur Google Chrome a défini des règles précises. Si vous souhaitez faire un cookie lié à un autre nom de domaine que celui au sein duquel vous êtes, il est obligatoire que le cookie soit paramétré d'une manière spécifique. C'est la même chose pour une extension qui veut lier un cookie à un nom de domaine. Vous devez à la fois paramétrer la variable "samesite" avec la valeur "None" et activer le paramètre "secure". Si vous ne le faites pas, vous obtiendrez le message d'erreur dans la console et le cookie ne sera pas enregistré. Pour le faire, vous utilisez la fonction setCookie(), mais l'écriture n'est pas la même suivant la version de PHP que vous utilisez. À partir de PHP 7.3, vous pouvez paramétrer les éléments d'options du cookie dans un tableau.

setcookie('monCookie', 'maValeur', array(
  'expires' => time() + 60*60*24*30,
  'path' => '/',
  'domain' => '.mon-site.fr', // le point au début permet la compatibilité avec les sous-domaines
  'secure' => true,
  'httponly' => false,
  'samesite' => 'None'
););

Si vous utilisez une version plus ancienne de PHP, alors le paramétrage avec un tableau n'est pas disponible. Vous devez utiliser une chaîne de caractères dans le troisième paramètre de la fonction, qui correspond au chemin. Indiquez le chemin, suivi d'un point-virgule et de l'option "SameSite" avec sa valeur. Ajoutez un autre point-virgule avec l'option "Secure".

 
setcookie('monCookie', 'maValeur', time()+(60*60*24*30), "/; SameSite=None; Secure");