Flux rss
Bookmark Ajouter aux favoris / Partager

Introduction aux cookies

Les cookies représentent un moyen simple de stocker temporairement des informations chez un client, afin de les récupérer ultérieurement. Concrètement il s'agit de fichiers texte stockés sur le disque dur du client après réception d'une réponse HTTP contenant des champs appropriés dans l'en-tête.

Les cookies font partie des spécifications du protocole HTTP. 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: 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 : suivie par des paires clés-valeur sous la forme CLE=VALEUR et séparées par des virgules.

L'API servlet de Java propose un objet permettant de gérer de façon quasi-transparente l'usage des cookies, il s'agit de l'objet Cookie.

L'objet Cookie

La classe javax.servlet.http.Cookie permet de créer un objet Cookie encapsulant toutes les opérations nécessaires à la manipulation des cookies.

Ainsi, le constructeur de la classe Cookie crée un cookie avec un nom et une valeur initiaux passés en paramètre. Il est toutefois possible de modifier la valeur de ce cookie ultérieurement grâce à sa méthode setValue().

Conformément à la norme HTTP 1.1, le nom du cookie doit être une chaîne de caractères ne contenant aucun caractère spécial défini dans la RFC 2068 (Il vaut mieux donc utiliser des caractères alphanumériques uniquement).
Les valeurs par contre peuvent inclure tous les caractères hormis les espaces ou chacun de ces caractères :

[ ] ( ) = , " / ?  : ;

Envoi du cookie

L'envoi du cookie vers le navigateur du client se fait grâce à la méthode addCookie() de l'objet HttpServletResponse.

void AddCookie(Cookie cookie)

Etant donnée que les cookies sont stockés dans les en-têtes HTTP, et que celles-ci doivent être les premières informations envoyées, la création du cookie doit se faire avant tout envoi de données au navigateur (le cookie doit être créé avant toute écriture sur le flot de sortie de la servlet)

Cookie MonCookie = new Cookie("nom", "valeur");

response.addCookie(MonCookie);

Récupération des cookies du client

Pour récupérer les cookies provenant de la requête du client, il suffit d'utiliser la méthode getCookies() de l'objet HttpServletRequest

Cookie[] getCookies()
Cette méthode retourne un tableau contenant l'ensemble des cookies présents chez le client. Il est ainsi possible de parcourir le tableau afin de retrouver un cookie spécifique grâce à la méthode getName() de l'objet Cookie().

Récupération de la valeur d'un cookie

La récupération de la valeur d'un cookie se fait grâce à la méthode getValue() de l'objet Cookie

String Valeur = Cookie.getValue()

Récupération de la valeur d'un cookie

L'exemple suivant permet de récupérer la valeur d'un cookie spécifique (dont le nom est "LeCookieQueJeCherche") et d'afficher sa valeur sur le navigateur du client :

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.net.*;

public class AfficheMonCookie extends HttpServlet {
	public void doGet (HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException	{		...
		
			// 
			Cookie[] cookies = request.getCookies();

			for(i=0; i < cookies.length; i++) {
				Cookie MonCookie = cookies[i];

				if (MonCookie.getName().equals("LeCookieQueJeCherche")) {
			String Valeur = cookies[i].getValue();

		}
		 }
		
	// ecriture de la reponse
		response.setContentType("text/html");

		PrintWriter out = response.getWriter();		
		out.println("<html><head>"); 
	out.println("<title>Mon Cookie</title>");

	out.println("</head><body>");

	out.println("Voici la valeur de mon cookie : " + Valeur");

		out.println("</body></html>"); 
	}
}

Ajouter des paramètres à un cookie

Voici l'ensemble des méthodes publiques de l'objet Cookie permettant d'obtenir des informations sur le cookie ou bien de préciser certains paramètres :

Méthode Description
Cookie(String Name, String Value)( Constructeur créant un objet Cookie de nom Name et de valeur Value)
String getDomain() Retourne le domaine pour lequel le cookie est valide
void setDomain(String Domain) Définit le domaine pour lequel le cookie est valide
int getMaxAge() Retourne la durée de validité du cookie (en secondes)
void setMaxAge(int duree) Définit la durée de validité du cookie (en secondes)
String getName() Retourne le nom du cookie
String getPath() Retourne le chemin pour lequel le cookie est valide
void setPath(String Chemin) Définit le chemin pour lequel le cookie est valide
boolean getSecure() Retourne true si le cookie doit être envoyé uniquement sur ligne sécurisée, sinon false
boolean setSecure(Boolean flag) Définit si le cookie doit être envoyé sur une ligne sécurisée (SSL)
String getValue() Retourne la valeur du cookie
void setValue(String Valeur) Redéfinit la valeur du cookie
int getVersion() Retourne la version du cookie
void setVersion(int Version) Définit la valeur du cookie


Dernière modification le mardi 14 octobre 2008 à 17:40:39.Ce document intitulé « Servlets - Cookies » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Cookies et servlets Bonjour, le code suivant permet de recuperer les cookies Cookie[] cookies = req.getCookies(); if (cookies != null) { for (int i = 0; i < cookies.length; i++) { String name = cookies[i].getName(); String value = cookies[i].getValue(); } } pourquoi faut... www.commentcamarche.net/forum/affich-10065035-cookies-et-servlets
Help!!!! <test cookies> Bonjour à tous! J'aurais besoin de savoir comment je dois faire pour tester si un navigateur accepte les cookies ou pas... Je vous remercie de vos reponse futures... Bisous a tous! www.commentcamarche.net/forum/affich-19963-help-test-cookies
Activer les cookies Un cookie est un fichier stocké sur le disque dur de l'utilisateur, afin de permettre au serveur web de le reconnaître d'une page web à l'autre. Les cookies sont notamment utilisés par les sites web afin de maintenir la session de l'utilisateur (et... www.commentcamarche.net/faq/sujet-7543-activer-les-cookies
[Internet] Gérer les cookiesGérer les cookies Les cookies sont des marques de votre passage sur les sites internet. Certains ne stockent que le mot de passe et le "login" correspondant à un site tandis que d'autres enregistrent davantage d'informations, généralement vos... www.commentcamarche.net/faq/sujet-1999-internet-gerer-les-cookies
Problème avec les cookiesBonjour, depuis deux heures, j'essaye désespérément de créer des cookies pour mon site ( je souhaite créer des cookies lorsque un membre se connecte comme ça, je peux l'identifier) mais je n'y arrive pas, mon navigateur me dit ça : Warning: Cannot... www.commentcamarche.net/forum/affich-11646293-probleme-avec-les-cookies
Comment accepter les cookies?Bonjour, je me suis inscrite sur un site mais au moment où je dois me connecter ça ne marche pas il est dit "IMPORTANT : votre navigateur doit accepter les cookies pour pouvoir vous identifier " J'ai suivi les astuces pour pourvoir accepter les... www.commentcamarche.net/forum/affich-12773484-comment-accepter-les-cookies
C'est quoi un tracking cookie? (Résolu)Bonsoir, régulièrement je scanne mon pc avec ad aware. Celui ci me trouve tout le temps des tracking cookies. C'est quoi? peut on les empêcher de revenir? Merci www.commentcamarche.net/forum/affich-722430-c-est-quoi-un-tracking-cookie
Cooking Mama 2: Cooking With FriendsOther Names:Cooking Mama 2, Genre:Action, Nb. de joueurs hors-ligne:1-2, Développeur:Office Create www.commentcamarche.net/guide/990647-cooking-mama-2-cooking-with-friends
Cooking Mama 2: Cooking With FriendsDéveloppeur:Office Create, Genre:Simulation, Nb. de joueurs hors-ligne:1-2, Other Names:Cooking Mama 2 www.commentcamarche.net/guide/1116164-cooking-mama-2-cooking-with-friends
Cooking Guide: Can't Decide What To Eat?Other Names:Cooking Guide, Speak! DS Cooking Navigator, DS Menu Collection, Touch Generations DS: Shaberu! DS Oryouri Navi (JPN), Genre:Productivity, Développeur:Indies Zero www.commentcamarche.net/guide/1140569-cooking-guide-can-t-decide-what-to-eat
Le jeu vidéo de la semaine : "Cooking Mama : Cook Off"(Paris - Relaxnews) - Après une sortie pour la Nintendo DS l'année dernière, le jeu Cooking Mama sort le 16 mai sur Wii sous le nom de Cooking Mama : Cook Off.Dans ce titre de Majesco, le joueur endosse le tablier d'un apprenti cuisiner. Dans la... www.commentcamarche.net/actualites/le-jeu-video-de-la-semaine-cooking-mama-cook-off-2987694-actualite.php3
Sécurité - Les cookiesIntroduction aux cookies Quels sont ces étranges gateaux qu'un site web vous a sûrement déjà proposé? La plupart du temps, lorsqu'un serveur web propose un cookie, les utilisateurs ignorent ce terme et cliquent sur « OK » sans se préoccuper de... www.commentcamarche.net/contents/securite/cookies.php3
Introduction aux servletsIntroduction aux servlets Les servlets (on dit généralement une servlet) sont au serveur Web ce que les applets sont au navigateur pour le client. Les servlets sont donc des applications Java fonctionnant du côté serveur au même titre que les CGI... www.commentcamarche.net/contents/servlets/servintro.php3
Servlets - Gestion des formulairesIntroduction aux formulaires Les servlets rendent très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML, c'est-à-dire une interface graphique permettant à l'utilisateur de saisir des données. Grâce à la balise... www.commentcamarche.net/contents/servlets/servform.php3