Skip to content

Commit 94ec21c

Browse files
committed
docs: tra third section
1 parent 14822e2 commit 94ec21c

File tree

1 file changed

+44
-2
lines changed

1 file changed

+44
-2
lines changed

6-data-storage/01-cookie/article-fr.md

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ Nous pouvons aussi accéder aux cookies depuis le navigateur, en utilisant la pr
1414

1515
Il y a beaucoup de chose malignes à faire à propos des cookies and leurs options. Dans ce chapitre nous les couvrirons en détail.
1616

17-
## Lecture depuis document.cookie
17+
## Lire depuis document.cookie
1818

1919
```online
2020
Votre navigateur stocke t-il des cookies depuis ce site ? Voyons voir :
@@ -34,4 +34,46 @@ La valeur de `document.cookie` consiste en des pairs `name=value`, délimité pa
3434

3535
Pour trouver un cookie en particulier, nous pouvons divisé `document.cookie` par `; `, et donc trouver le bon nom. Nous pouvons utiliser soit une expression régulière (regex) ou les fonctions de tableau pour faire cela.
3636

37-
Nous laissons ça en tant qu'exercice pour le lecteur. Aussi, à la fin du chapitre vous trouverez des fonctions utilitaires pour manipuler les cookies.
37+
Nous laissons ça en tant qu'exercice pour le lecteur. Aussi, à la fin du chapitre vous trouverez des fonctions utilitaires pour manipuler les cookies.
38+
39+
## Écrire depuis document.cookie
40+
41+
Nous pouvons écrire avec `document.cookie`. Mais ce n'est pas une propriété de données, c'est un [accesseur (getter/setter)](info:property-accessors). Une affectation à ça est traitée de façon particulière.
42+
43+
**Une opération d'écriture à `document.cookie` met à jour seulement les cookies mentionnés dedans, mais ne touche pas les autres cookies.**
44+
45+
Par exemple, cet appel définit un cookie avec le nom `user` et la valeur `John` :
46+
47+
```js run
48+
document.cookie = "user=John"; // Met à jour uniquement le cookie nommé 'user'
49+
alert(document.cookie); // Affiche tous les cookies
50+
```
51+
52+
Si vous exécutez ça, vous verrez probablement plusieurs cookies. Car l'opération `document.cookie=` ne réécrit pas tous les cookies. Elle définit uniquement le cookie `user` mentionné.
53+
54+
Techniquement, le nom et la valeur peuvent être n'importe quel caractère. Pour garder un formattage valide, ils devraient pouvoir être échappés en utilisant la fonction integrée `encodeURIComponent` :
55+
56+
```js run
57+
// Les caractères spéciaux ont besoin d'encodage
58+
let name = "my name";
59+
let value = "John Smith"
60+
61+
// Encode le cookie en tant que my%20name=John%20Smith
62+
document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value);
63+
64+
alert(document.cookie); // ...; my%20name=John%20Smith
65+
```
66+
67+
```warn header="Limitations"
68+
Il y a quelques limites :
69+
- La paire `name=value`, après `encodeURIComponent`, ne peut pas excéder 4KB. Donc on ne peut pas stocker quelque chose trop lourd sur un cookie.
70+
- Le nombre total de cookie par domaine est limité à ~ 20+, la limite exacte dépend du navigateur.
71+
```
72+
73+
Les cookies ont plusieurs options, beaucoup d'entre elles sont importantes et devraient être définies.
74+
75+
Les options sont listées après `key=value`, délimité par `;`, comme ça :
76+
77+
```js run
78+
document.cookie = "user=John; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT"
79+
```

0 commit comments

Comments
 (0)