HTTP_HEADER - Kasimashi/Systemes-embarques GitHub Wiki
Les cookies
Quels sont ces étranges gateaux qu'un site web vous a sûrement déjà proposé?
Les cookies sont des fichiers stockés dans l'ordinateur de l'utilisateur et plus précisément au niveau du navigateur (disque dur de l'utilisateur). Qui permettent de stocker des informations d'authentification, des préférences d'un site, ou bien encore un panier de course. A chaque fois qu'un utilisateur va interférer avec un navigateur, il va donner des informations au webserver. Chaque cookies est différents suivants les sites ainsi les cookies valable sur un site ne sont pas valable sur un autre.
Fonctionnement
Les cookies font partie des spécifications du protocole HTTP, c'est-à-dire le protocole permettant de surfer sur des pages web. Le protocole HTTP permet d'échanger des messages entre le serveur et le client à l'aide de requêtes HTTP et de réponses HTTP.
Les requêtes et réponses HTTP contiennent des en-têtes permettant d'envoyer des informations particulières de façon bilatérale. Un de ces en-têtes est réservé à l'écriture de fichiers sur le disque dur : les cookies.
L'en-tête HTTP réservé à l'utilisation des cookies s'appelle Set-Cookie, il s'agit d'une simple ligne de texte de la forme :
Set-Cookie : NOM=VALEUR; domain=NOM_DE_DOMAINE; expires=DATE
Il s'agit donc d'une chaîne de caractères commençant par « Set-Cookie : » et suivie de paires clés-valeur, sous la forme CLE=VALEUR, séparées par des virgules. Voici un tableau des principales clés (appelées attributs) possibles pour un cookie :
Attribut | Valeur | Syntaxe | Description |
---|---|---|---|
NOM_DU_COOKIE | VALEUR | Le nom et la valeur ne peuvent pas contenir les caractères point-virgule (;), virgule (,) et espace (). Pour mettre de telles valeur il faut recourir à l'encodage URL | Cet attribut est obligatoire (c'est d'ailleurs le seul) |
expires | DATE | Jour, DD-Moi-YYYY HH:MM:SS GMT | L'attribut expires permet de définir la date à laquelle le cookie ne doit plus être stocké sur le disque, et ne doit plus être pris en compte par le serveur |
domain | nom_du_domaine | xxx.xxx.xxx | Le nom de domaine est généralement laissé vide car le nom du serveur est assigné par défaut (c'est ce que l'on désire généralement). Lorsqu'il est indiqué, le nom de domaine doit contenir au moins deux points (ie www.commentcamarche.net). Une machine provenant d'un domaine spécifique ne peut spécifier qu'un nom de sous-domaine ou son propre nom de domaine |
path | /repertoire | /chemin/ | L'attribut path (traduisez chemin) permet de définir un sous-répertoire ou un fichier du serveur sur lequel le cookie est valide, afin de réduire son champ d'action |
secure | aucun | L'attribut secure est optionnel. Il permet de spécifier que le cookie sera envoyé uniquement si la connexion est sécurisée (par SSL ou S-HTTP) |
Une session
Une session peux être considéré comme un stockage de l'information cette fois coté serveur. A la place de stocker des cookies coté client, on utilise un identifier unique coté client appelé "session id". Cette id de session est passée à chaques requêtes HTTP et permet au serveur de retrouver les valeurs stockés.
Une session créer un fichier dans un dossier temporaire sur le serveur. Une session termine quand l'utilisateur quitte le site, le serveur va dans ce cas terminer la sessions dans un temps prédéfini, en général dans les 30 mins.
Les cookies font partie des spécifications du protocole HTTP, c'est-à-dire le protocole permettant de surfer sur des pages web. Le protocole HTTP permet d'échanger des messages entre le serveur et le client à l'aide de requêtes HTTP et de réponses HTTP.
Les requêtes et réponses HTTP contiennent des en-têtes permettant d'envoyer des informations particulières de façon bilatérale. Un de ces en-têtes est réservé à l'écriture de fichiers sur le disque dur : les cookies.
L'en-tête HTTP réservé à l'utilisation des cookies s'appelle Set-Cookie, il s'agit d'une simple ligne de texte de la forme :
Set-Cookie : NOM=VALEUR; domain=NOM_DE_DOMAINE; expires=DATE Il s'agit donc d'une chaîne de caractères commençant par « Set-Cookie : » et suivie de paires clés-valeur, sous la forme CLE=VALEUR, séparées par des virgules. Voici un tableau des principales clés (appelées attributs) possibles pour un cookie :
Attribut Valeur Syntaxe Description NOM_DU_COOKIE VALEUR Le nom et la valeur ne peuvent pas contenir les caractères point-virgule (;), virgule (,) et espace (). Pour mettre de telles valeur il faut recourir à l'encodage URL Cet attribut est obligatoire (c'est d'ailleurs le seul) expires DATE Jour, DD-Moi-YYYY HH:MM:SS GMT L'attribut expires permet de définir la date à laquelle le cookie ne doit plus être stocké sur le disque, et ne doit plus être pris en compte par le serveur domain nom_du_domaine xxx.xxx.xxx Le nom de domaine est généralement laissé vide car le nom du serveur est assigné par défaut (c'est ce que l'on désire généralement). Lorsqu'il est indiqué, le nom de domaine doit contenir au moins deux points (ie www.commentcamarche.net). Une machine provenant d'un domaine spécifique ne peut spécifier qu'un nom de sous-domaine ou son propre nom de domaine path /repertoire /chemin/ L'attribut path (traduisez chemin) permet de définir un sous-répertoire ou un fichier du serveur sur lequel le cookie est valide, afin de réduire son champ d'action secure aucun L'attribut secure est optionnel. Il permet de spécifier que le cookie sera envoyé uniquement si la connexion est sécurisée (par SSL ou S-HTTP
Un cookie ne peut pas dépasser 4 Ko Un client ne peut pas avoir plus de 300 cookies sur son disque Un serveur ne peut créer que 20 cookies maximum chez le client