Quelle est la différence entre une session et un cookie?
Quelles circonstances faut-il utiliser?
Sessions
Les sessions sont stockées par utilisateur dans la mémoire (ou dans une alternative Session-State ) sur le serveur. Les sessions utilisent un cookie (clé de session _) pour lier l'utilisateur à la session. Cela signifie qu'aucune donnée "sensible" n'est stockée dans le cookie de la machine de l'utilisateur.
Les sessions sont généralement utilisées pour conserver l'état lorsque vous naviguez sur un site Web. Cependant, ils peuvent également être utilisés pour contenir des objets couramment utilisés. Uniquement si l'état de session est défini sur InProc, s'il est défini sur un autre mode d'état de session l'objet doit également être sérialisable.
Session["userName"] = "EvilBoy";
if(Session["userName"] != null)
lblUserName.Text = Session["userName"].ToString();
Biscuits
Les cookies sont stockés par utilisateur sur la machine de l'utilisateur. Un cookie est généralement juste un peu d'information. Les cookies sont généralement utilisés pour les préférences de couleurs des paramètres utilisateur simples, etc. Aucune information sensible ne devrait jamais être stockée dans un cookie.
Vous ne pouvez jamais être totalement sûr qu'un cookie n'a pas été falsifié par un utilisateur ou une source externe. Cependant, si la sécurité est une préoccupation majeure et que vous devez utiliser des cookies, vous pouvez alors crypter vos cookies ou les configurer pour qu'ils ne soient transmis que par SSL. Un utilisateur peut supprimer ses cookies à tout moment ou ne pas en autoriser totalement. Vous ne pouvez donc pas compter sur leur présence uniquement parce qu'un utilisateur a déjà visité votre site.
//add a username Cookie
Response.Cookies["userName"].Value = "EvilBoy";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(10);
//Can Limit a cookie to a certain Domain
Response.Cookies["domain"].Domain = "Stackoverflow.com";
//request a username cookie
if(Request.Cookies["userName"] != null)
lblUserName.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);
sidenote
Il est à noter que ASP.NET prend également en charge cookieless state-management
Cookie est un stockage côté client de vos variables. Il stocké sur la machine cliente par navigateur physiquement. Sa portée est large comme une machine. Différents utilisateurs d'une même machine peuvent lire le même cookie.
À cause de ce :
Session est un stockage côté serveur de vos variables. Par défaut, il est stocké dans la mémoire du serveur. Mais vous pouvez le configurer pour stocker sur SqlServer. Sa portée est large navigateur. Le même utilisateur peut exécuter deux navigateurs ou plus et chaque navigateur a sa propre session.
À cause de ce :
Un cookie est une chaîne d'identifaction stockée par un serveur (qui a un domaine) dans le navigateur de l'utilisateur qui visite le serveur/domaine.
Une session est une unité de variables, d’état, de paramètres lorsqu'un utilisateur donné accède à un serveur/domaine dans un laps de temps déterminé. Toutes les informations de session sont dans le modèle traditionnel stocké sur le serveur (!)
Étant donné que de nombreux utilisateurs simultanés peuvent visiter un serveur/domaine en même temps, le serveur doit pouvoir distinguer plusieurs sessions simultanées et toujours attribuer la bonne session au bon utilisateur. (Et aucun utilisateur ne peut "voler" la session d'un autre utilisateur)
Cela se fait par le cookie. Le cookie qui est stocké dans le navigateur et qui devrait dans ce cas être une combinaison aléatoire telle que s73jsd74df4fdf (afin qu’il ne puisse pas le deviner) est envoyé à chaque demande du navigateur au serveur et le serveur peut attribuer et utiliser ses réponses (pages vues)
Le cookie permet au serveur de reconnaître le navigateur/l'utilisateur. La session permet au serveur de mémoriser des informations entre différentes vues de page.
Il est possible d'avoir les deux: une clé primaire de base de données est hachée et stockée dans une table de recherche: le hachage est ensuite stocké sur le client sous forme de cookie. Une fois que le cookie de hachage (hahhahaha :) est envoyé, la clé primaire correspondante est recherchée et les autres détails lui sont associés dans une autre table de la base de données du serveur.
La session est un objet côté serveur, Qui transfère ou accède aux données entre les appels de pages.
Cookies est un objet côté client/ordinateur client qui stocke des informations textuelles du navigateur et du serveur.
Les sessions ne dépendent pas de l'utilisateur autorisant un cookie. Ils fonctionnent plutôt comme un jeton permettant l’accès et la transmission d’informations pendant que l’utilisateur a son navigateur ouvert. Le problème avec les sessions est que lorsque vous fermez votre navigateur, vous perdez également la session. Ainsi, si vous avez un site nécessitant une connexion, celle-ci ne peut pas être enregistrée en tant que session, contrairement à un cookie, et l'utilisateur est obligé de se reconnecter chaque fois qu'il visite.
La principale différence entre les cookies et les sessions est que les cookies sont stockés dans le navigateur de l'utilisateur et que les sessions ne le sont pas. Cette différence détermine ce que chacun utilise le mieux.
Un cookie peut conserver des informations dans le navigateur de l'utilisateur jusqu'à leur suppression. Si une personne a un identifiant et un mot de passe, celui-ci peut être défini comme un cookie dans son navigateur, de sorte qu'il ne soit pas nécessaire de se reconnecter à votre site Web à chaque visite. Vous pouvez stocker presque n'importe quoi dans un cookie de navigateur.
Il semble y avoir une certaine confusion quant à ce qu’est un cookie de session.
Tout d'abord, lorsque nous parlons de cookies de session, cela n'a rien à voir avec les sessions ASP.Net. De même, les cookies de session n'ont rien à voir avec les processus côté serveur ou la mise en cache.
Un cookie de session n'est rien d'autre qu'un cookie qui expire à l'expiration de la session du navigateur. Pour créer un cookie de session, n'indiquez pas de date d'expiration. Cela permet de stocker le cookie en mémoire et de le supprimer lorsque le navigateur est supprimé.