document.cookie

document.cookie = 'name=value; max-age=…; path=/; SameSite=Lax'

En lecture, renvoie tous les cookies accessibles en une seule chaîne a=1; b=2. En écriture, définit un seul cookie, avec les options après des points-virgules. Les cookies sont envoyés au serveur à chaque requête.

Paramètres

  • max-age – la durée de vie en secondes (ou expires avec une date) ; sans elle, le cookie disparaît à la fermeture du navigateur.
  • path, domain – pour quelles adresses il est valable.
  • SameSite (Lax, Strict, None) et Secure (HTTPS uniquement).

Exemples

document.cookie = 'lang=fr; max-age=' + 60 * 60 * 24 * 365 + '; path=/; SameSite=Lax';
document.cookie = 'consent=' + encodeURIComponent('analytique,marketing') + '; path=/; SameSite=Lax';
const cookie = (name) => {
  const c = document.cookie.split('; ').find((x) => x.startsWith(name + '='));
  return c ? decodeURIComponent(c.slice(name.length + 1)) : null;
};
console.log(cookie('lang'), cookie('consent'), cookie('absent'));
document.cookie = 'lang=; max-age=0; path=/';
console.log(cookie('lang'), document.cookie.includes('consent='));

Résultat :

fr analytique,marketing null
null true

Points d’attention

  • JavaScript ne voit pas les cookies avec le drapeau HttpOnly (par exemple ceux de connexion créés en PHP) – et c’est voulu.
  • Suppression : même nom et même path avec max-age=0.
  • Encodez les valeurs (encodeURIComponent()) – un point-virgule ou une virgule casserait le cookie.
  • Les données dont le serveur n’a pas besoin vont dans localStorage – les cookies alourdissent inutilement chaque requête. Les cookies facultatifs exigent le consentement du visiteur.

Prise en charge par les navigateurs

Baseline – largement disponible : dans tous les navigateurs courants depuis juillet 2019, considéré comme largement disponible depuis janvier 2022. Depuis la version : Chrome 1, Firefox 68, Safari 4 ; absent de Node.js (API du navigateur). État : octobre 2026 (MDN browser-compat-data).

Voir aussi :
localStorage
sessionStorage
encodeURIComponent()