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
expiresavec 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
pathavecmax-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()