Cookie (informatique) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Implémentation

Une interaction possible entre un navigateur web et le serveur hébergeant la page Web. Le serveur envoie un cookie au navigateur et le navigateur le renvoie quand il appelle une autre page.

Les cookies sont de petites données envoyées par le serveur web au navigateur. Le navigateur les retourne inchangées au serveur, introduisant un état (mémoire des événements antérieurs) dans la transaction HTTP qui autrement serait sans état. Sans les cookies, chaque récupération de page Web ou d'un composant d'une page Web est un événement isolé, indépendant des autres requêtes faites sur le même site. En plus de pouvoir être mis en place par le serveur web, les cookies peuvent aussi être mis en place par des langages de script comme JavaScript, s'il est supporté et autorisé par le navigateur.

La spécification officielle des cookies suggère que les navigateurs soient capables d'enregistrer et de renvoyer un nombre minimal de cookies. Spécifiquement, un navigateur devrait être capable de stocker au moins 300 cookies de quatre kilo-octets chacun, et au moins 20 cookies pour un même serveur ou domaine.

D'après la section 3.1 de RFC 2965, les noms de cookies sont insensibles à la casse.

Un cookie peut spécifier la date de son expiration, dans ce cas le cookie sera supprimé à cette date. Si le cookie ne spécifie pas de date d'expiration, le cookie est supprimé dès que l'utilisateur quitte son navigateur. En conséquence, spécifier une date d'expiration est un moyen de faire survivre le cookie à travers plusieurs sessions. Pour cette raison, les cookies avec une date d'expiration sont dits persistants. Un exemple d'application: un site de vente peut utiliser les cookies persistants pour enregistrer les articles que les utilisateurs ont placés dans leur panier d'achat (en réalité, le cookie peut faire référence à une entrée enregistrée dans une base de données du site de vente, et non pas dans votre ordinateur). Grâce à ce moyen, si les utilisateurs quittent leur navigateurs sans faire un achat et y retournent plus tard, ils pourront trouver à nouveau les articles dans le panier. Si ces cookies ne donnaient pas de date d'expiration, ils expireraient à la fermeture du navigateur, et l'information sur le contenu du panier serait perdue.

Les cookies peuvent être limités dans leur portée à un domaine spécifique, un sous-domaine ou un chemin d'accès sur le serveur qui les a créés.

Création d'un cookie

Le transfert des pages web se fait à l'aide du protocole de transfert HyperTexte (HTTP). En ne tenant pas compte des cookies, les navigateurs appellent une page provenant des serveurs web en leurs envoyant en général un texte court appelé requête HTTP. Par exemple, pour accéder à la page www.exemple.org/index.html, les navigateurs se connectent au serveur www.exemple.org et envoie une requête qui ressemble à celle-ci:

GET /index.html HTTP/1.1

Host: www.exemple.org

navigateur
serveur

Le serveur répond en envoyant la page demandée, précédée par un texte similaire appelé 'réponse HTTP'. Ce paquet peut contenir des lignes demandant au navigateur de stocker des cookies:

HTTP/1.1 200 OK

Content-type: text/html

Set-Cookie: name=value

(contenu de la page)

navigateur
serveur

Le serveur envoie seulement la ligne Set-Cookie si le serveur veut que le navigateur stocke un cookie. Set-Cookie est une requête pour que le navigateur stocke la chaîne name=value et la renvoie dans toutes les futures requêtes au serveur. Si le navigateur supporte les cookies et que les cookies sont permis dans les options du navigateur, le cookie sera inclus dans toutes les requêtes suivantes faite au même serveur. Par exemple, le navigateur appelle la page www.exemple.org/spec.html en envoyant au serveur www.exemple.org la requête suivante:

GET /spec.html HTTP/1.1

Host: www.exemple.org

Cookie: name=value

Accept: */*

navigateur
serveur

Ceci est une requête pour une autre page du même serveur, et diffère de la première au-dessus car elle contient une chaîne que le serveur a précédemment envoyé au navigateur. Grâce à ce moyen, le serveur sait que cette requête est reliée à la précédente. Le serveur répond en envoyant la page appelée, et aussi en y ajoutant d'autres cookies.

La valeur du cookie peut être modifiée par le serveur en envoyant une nouvelle ligne Set-Cookie: name=nouvelle_valeur en réponse à la page appelée. Le navigateur remplace alors l'ancienne valeur par la nouvelle.

La ligne Set-Cookie est généralement créée par un programme CGI ou un autre langage de script, et non par le serveur HTTP. Le serveur HTTP (exemple: Apache) ne fera que transmettre le résultat du programme (un document précédé par l'en-tête contenant les cookies) au navigateur.

Les cookies peuvent aussi être mis en place par JavaScript ou d'autres langages similaires exécutés dans le navigateur, c'est-à-dire du côté du client plutôt que du côté du serveur. En JavaScript, l'objet document.cookie est utilisé dans ce but. Par exemple, l'instruction document.cookie="température=20" crée un cookie nommé température et de valeur 20.

Les attributs d'un cookie

Exemple d'une réponse HTTP de google.com, qui met en place un cookie avec des attributs.

En plus de la paire nom/valeur, un cookie peut aussi contenir une date d'expiration, un chemin, un nom de domaine et le type de connexion prévu, c'est-à-dire normale ou chiffrée. La RFC 2965 définit aussi que les cookies doivent avoir un numéro de version obligatoire, mais cela est généralement omis. Ces parties de données suivent la paire nom=nouvelle_valeur et sont séparées par des points virgules. Par exemple, un cookie peut être créé par le serveur en envoyant une ligne Set-Cookie: nom=nouvelle_valeur; expires=date; path=/; domain=.exemple.org.

Expiration

Les cookies expirent, et ne sont alors pas envoyés par le navigateur au serveur, sous certaines conditions que voici:

  1. À la fin de la session de l'utilisateur (c'est à dire quand le navigateur est fermé) si le cookie n'est pas persistant.
  2. Une date d'expiration a été définie, et a été atteinte.
  3. La date d'expiration du cookie est changée (par le serveur ou le script) en une date du passé.
  4. Le navigateur supprime le cookie à la demande de l'utilisateur.

La troisième condition permet au serveur ou au script de supprimer explicitement le cookie. Notons que le navigateur n'envoie pas l'information sur la durée de vie du cookie, donc il n'y a pas moyen pour le serveur de vérifier si le cookie expire prochainement ou non.

Page générée en 0.103 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise