|
Un cookie est un ensemble d'infos stockés sur le disque de
l'utilisateur pour faciliter la navigation.
Il ne peut contenir que ce que l'utilisateur a bien voulu
donner. Les autres renseignements tels que l'adresse IP ou le type
de navigateur utilisé sont connus indépendamment des cookies !
Exemple :
Mais jamais un cookie ne pourrra récupérer à votre insu , par exemple,
votre adresse Email (à moins
que vous ne la communiquiez explicitement dans un formulaire)
Un cookie est une information de type "texte" qui est
stockée, à l'aide d'un JavaScript, sur la machine du client, sous des
formes diverses suivant le navigateur utilisé (liste non exhaustive):
|
dans un fichier unique "cookie.txt" Ex. : D:\Program Files\Netscape\Users\Jean_Claude_Bellamy\cookies.txt |
|
dans plusieurs fichiers adresse internet
"Cookie:<username>@<serveur>" (un par serveur) Ex. : C:\WINNT\Profiles\Bellamy\Temporary Internet Files\Cookie:bellamy@www.toto.com |
NB: tous les scripts (JavaScripts) présents dans ce document HTML sont librement utilisables et copiables !
Un nom (obligatoire)
défini dans le champ name, c'est une valeur alphanumérique quelconque
document.cookie=name+"="+value;
auquel peuvent s'ajouter d'autres paramètres facultatifs , à savoir :
Une date d'expiration
définie dans le champ expires, indique jusqu'à quelle date le cookie peut être utilisé. C'est une valeur date exprimée sous la forme Sun,JJ-MM-AA HH:MM:SS GMT, le jour de la semaine étant en anglais abrégé (Sun, Mon, Tue, ...)
Si on ne précise pas de date d'expiration, le cookie "meurt" à la fin de la session en cours du navigateur.
// date d'expiration le 1er Janvier de l'an 2000 :
var dateExp="Sat, 01-Jan-2000 08:00:00 GMT";
document.cookie=name+"="+value+";expires="+dateExp;
Un chemin
défini dans le champ path, indique la partie de l'URL pour lequel le cookie est valable. Si on ne précise pas de chemin, le cookie est visible partout sur le site.
Par exemple, sur le serveur www.toto.com, on désire que le cookie de nom henri, initialisé à logo_en_flammes ne soit accessible que pour les documents situés dans le répertoire schmurz
//On est dans le document http://www.toto.com/schmurz/index.htm
//Ce cookie sera "visible" à partir de http://www.toto.com/schmurz/news.htm
//mais ne le sera pas depuis http://www.toto.com/grouchard/truc.htm
document.cookie="henri=logo_en_flammes;expires=Wed, 31-Dec-1997 23:59:59 GMT;path=schmurz";
Un domaine
défini dans le champ domain, indique le domaine (=le serveur, ou une partie de l'adresse du serveur) pour lequel le cookie est valable. Effectivement, un serveur peut créer un cookie qui sera lu par un autre serveur. C'est un cas de figure assez rare, et d'intérêt pour le moins limité, voire "bizarre", où un site "fonctionnerait" pour un autre. Si on ne définit pas de domaine, c'est celui du serveur créant le cookie qui est pris en compte
//On est dans http://www.toto.com/schmurz/index.htm
//On désire que le cookie "henri" soit lisible depuis le site "www.hal.com"
//www.toto.com ne pourra plus lire le cookie, par contre www.hal.com le pourra
document.cookie="henri=logo_en_flammes;expires=Wed, 31-Dec-1997 23:59:59 GMT;domain=www.hal.com";Un navigateur comme Netscape a prévu la possibilité d'interdire ce genre d' "entente" entre serveurs. Cette distinction n'existe pas dans MSIE (versions actuelles : 4).
Un attribut de sécurité
défini par le "flag" secure, indique (s'il existe) que le cookie ne sera transmis quesi la connexion vers le serveur est sécurisée (protocole HTTPS et non pas HTTP)
//le cookie "henri" ne sera transmis que si la connexion est effectuée via https
document.cookie="henri=logo_en_flammes;expires=Wed, 31-Dec-1997 23:59:59 GMT;secure";
Elles concernent la taille et le nombre de cookies pouvant être stockés sur chaque poste client
L'information est stockée ou lue depuis ou vers un document HTML via un script adéquat, en utilisant le champ cookie de l'objet document. Ce champ (ou propriété) cookie contient une suite de paires nom/valeur de chaines alphanumériques , séparées par des points-virgules (cf. plus haut). Par exemple, les fonctions de base pour créer et lire un cookie peuvent s'écrire ainsi :
<script LANGUAGE="JavaScript">
//Création ou réaffectation d'un cookie
//dateExp est une chaine date d'expiration du cookie
var dateExp="Sat, 01-Jan-2000 08:00:00 GMT";
//les cookies créés ici n'existeront plus après le 1er janvier de l'an 2000
function newCookie(name,value) {
document.cookie=name+"="+value+";expires="+dateExp;
}
//Lecture d'un cookie
//retourne une chaine vide si le cookie n'existe pas
function getCookie(nameCookie) {
var cookieTrouve=false;
var debut=0;
var fin=0;
var ch=document.cookie;
var i=0;
while (i<=ch.length) {
debut=i;
fin=debut+nameCookie.length;
if (ch.substring(debut,fin)==nameCookie) {
cookieTrouve=true;
break;
}
i++;
}
if (cookieTrouve) {
debut=fin+1;
fin=document.cookie.indexOf(";",debut);
if(fin<debut)
fin=document.cookie.length;
return document.cookie.substring(debut,fin);
}
return "";
}
</script>
Dans le document HTML où on aura inséré le code ci-dessus, il suffit de rajouter d'autres scripts d'écriture et/ou lecture, par exemple :
<a href="javascript:newCookie('schmurz','plops')"><img src="/toto.gif">Cliquez-ici</a>
Cette ligne crée le cookie de nom schmurz et lui affecte la valeur plops
quand on clique sur l'image toto.gif
Dans un autre document HTML, en ayant réécrit le script contenant les fonctions de base
initiales, l'ajout du script suivant provoquera l'affichage de la valeur du cookie schmurz
:
<script LANGUAGE="JavaScript">
document.write(getCookie('schmurz'));
</script>
Soit un site avec une page d'accueil, puis un certain nombre d'autres pages, toutes de
même niveau, et l'on veut que l'utilisateur "élise" une page favorite, qu'il
pourra atteindre ensuite d'un simple click depuis la page d'accueil pour les visites
futures.
<script LANGUAGE="JavaScript">
//inclure ici les fonctions newCookie et getCookie
//.........
function recFavoritePage() {
//URL de la page en cours
var URL=this.location.href;
//mémorisation de cette page dans le cookie 'Favorite'
newCookie('Favorite',URL);
}
</script>
suivi de ce lien, à l'endroit où l'on veut placer le bouton d'action de mémorisation
<a href="javascript:recFavoritePage()">
<img src="favorite.gif">Cliquez-ici si cette page est votre favorite</a>
<script LANGUAGE="JavaScript">
//.....
function goFavoritePage() {
//URL de la page favorite
var URL=getCookie('Favorite');
//Saut vers cette page (si non vide)
if (URL!="") {document.location.href=URL;}
}
</script>
suivi de ce lien, à l'endroit où l'on veut placer le bouton de branchement vers la page favorite :
<a href="javascript:goFavoritePage()">
<img src="/favorite.gif">Votre page favorite</a>
(Evidemment, pour que ce test fonctionne, les cookies ne doivent pas
être désactivés dans votre navigateur !)
Actuellement, les cookies que votre navigateur a
(éventuellement) enregistrés en rapport avec le serveur sont les suivants (en caractères gras,
le dernier saisi) :
(NB: il n'y a aucun CGI-BIN dans ce formulaire ! Uniquement du JavaScript !)
Les cookies permettent des raccourcis très "élégants" et
très pratiques, dont il serait dommage de se passer.
Ce ne sont que des fichiers contenant quelques lignes de texte, et rien
d'autre.
Toutes les informations qu'ils contiennent auront été volontairement
données par vous-même.
Si par hasard un site WWW vous demande des renseignements plus ou moins confidentiels tels
que votre compte bancaire, la liste des logiciels que vous utilisez,..., c'est le
site lui-même (et surtout son responsable) qui est à mettre en
cause, et non pas les cookies qu'il pourrait
éventuellement créer.
Pour en savoir plus (liste non exhaustive!):