Maison >développement back-end >Tutoriel C#.Net >Explication détaillée de la lecture d'exemples de cookies en C#
Lien :
1. Écriture des cookies
1. Les attributs Nom et Valeur sont définis par le programme, ainsi que les valeurs par défaut. sont tous deux vides.
2. La valeur par défaut de l'attribut Domaine est la partie nom de domaine de l'URL actuelle, quel que soit le répertoire dans lequel se trouve la page qui émet ce cookie.
L'attribut de domaine est par défaut www.kent.com. Cet attribut peut être défini sur la valeur requise par le programme.
3. La valeur par défaut de l'attribut Path est le répertoire racine, c'est-à-dire "/", quel que soit le répertoire dans lequel se trouve la page qui envoie ce cookie. La portée de ce cookie peut être davantage limitée en le définissant sur un certain chemin par le programme.
4. Attribut Expire, cet attribut définit la date et l'heure d'expiration de ce cookie. Si la durée de validité du cookie n'est pas définie (paramètre par défaut), un cookie peut également être créé, mais il ne sera pas enregistré sur le disque dur de l'utilisateur, mais fera partie des informations de session de l'utilisateur. Le cookie disparaîtra lorsque le cookie sera activé. le navigateur est fermé ou la session expire. Ce type de cookie est appelé cookie non persistant. Le cookie qui stocke SessionID est un tel cookie. Il n'est pas stocké sur le disque dur, mais existe uniquement dans la mémoire.
5. Attachez le cookie à envoyer à l'attribut Cookies de Response pour envoyer le cookie au client : Response.Cookies.Add(Cookie)
6. L'attribut Domaine + l'attribut Chemin sont le même Tous les cookies sont stockés dans un fichier côté client et les cookies sont séparés par "*". La première ligne de chaque Cookie est le nom du Cookie, la deuxième ligne est la valeur, la troisième ligne est une chaîne composée de l'attribut Domaine + de l'attribut Chemin, indiquant la portée de ce Cookie, et les lignes restantes contiennent les informations de traitement quotidien. du Cookie, comme la date et l’heure d’expiration. Il y a également une simple somme de contrôle dans le cookie, donc si le nom du cookie ou la longueur de la valeur est modifié, le navigateur détectera la modification et supprimera le cookie.
2. Lecture des cookies
1. L'attribut Request.Cookies contient une collection de tous les cookies envoyés par le client au serveur, et est uniquement dans le cadre de l'URL de la requête. Le cookie qu'il contient sera envoyé au serveur par le navigateur avec la requête HTTP.
2. Les attributs Nom et Valeur et les valeurs de sous-clés sont faciles à lire.
3. Les attributs Domaine et Chemin ne peuvent pas être lus. L'attribut Domaine est toujours "" et l'attribut Chemin est toujours "/". À l’origine, ces propriétés étaient d’une utilité limitée. Si votre page n'est pas sur le même domaine que le cookie, vous ne recevrez pas du tout le cookie à l'emplacement de la page.
4. La date et l'heure d'expiration du cookie ne peuvent pas être lues. En fait, lorsque le navigateur envoie des informations sur les cookies au serveur, le navigateur n'inclut pas les informations d'expiration. Vous pouvez lire la propriété Expires, mais elle renvoie toujours une valeur date/heure de zéro. Le rôle principal de l'attribut Expires est d'aider le navigateur à effectuer la gestion quotidienne du stockage des cookies. Du point de vue du serveur, soit le cookie existe, soit il n'existe pas, donc la date d'expiration n'est pas une information utile pour le serveur. Le navigateur ne fournit donc pas ces informations lors de l’envoi du cookie. Si vous avez besoin de la date d'expiration d'un cookie, vous devrez la redéfinir.
3. Modifier et supprimer les cookies
1. En effet, vous ne pouvez pas modifier directement un cookie. Vous devez créer un cookie du même nom et envoyer le cookie. au navigateur. Écrasez les anciens cookies sur la machine client.
2. De même, vous ne pouvez pas supprimer un cookie directement. Vous pouvez modifier un cookie pour permettre au navigateur de supprimer le cookie pour vous. Modifier la période de validité du cookie à une certaine heure dans le passé. vérifie le cookie. À l'expiration de la période de validité, le cookie expiré sera supprimé. Modifier la période de validité et supprimer les cookies
4. La relation entre Cookie et Session
1. La session dans asp.net peut utiliser des méthodes cookie et sans cookie. consiste à changer le SessionID, à le mettre dans l'URL et à le transmettre entre le client et le serveur sans utiliser de cookies. Cette méthode ne sera pas abordée ici.
2. Dans asp.net, lorsqu'un client demande une URL pour la première fois, le serveur génère un SessionID pour le client et l'envoie au client sous forme de cookie non permanent.
3. Les cookies non permanents ne disparaîtront qu'après la fermeture du navigateur. Le jugement du délai d'expiration de la session est le processus suivant :
3.1 La première fois que le client accède au serveur, un ID de session sera obtenu et envoyé au client sous forme de cookie non persistant.
3.2 Lors de l'accès à cette URL avant la fermeture du navigateur, le navigateur enverra le SessionID au serveur. Le serveur conservera différents statuts du serveur correspondant au client en fonction du SessionID (c'est-à-dire les différents (états enregistrés dans les valeurs de Session), ces Sessions peuvent être exploitées dans des applications Web.
3.3 Le serveur maintient le délai d'expiration de cet ID de session. Le délai d'expiration de la session peut être défini dans IIS. Chaque requête amènera le serveur à prolonger le délai d'expiration de ce SessioID d'un délai d'expiration défini.
3.4 Lorsque le serveur constate qu'un SessionID a expiré, c'est-à-dire qu'un client n'a pas visité à nouveau le site dans le délai d'expiration défini, le SessionID et toutes les variables de session liées à cet ID de session seront supprimés.
3.5 Avant la fermeture du navigateur du client, il ne sait pas que le serveur a supprimé le SessionID. Le client envoie toujours le cookie de ce SessionID au serveur, mais à ce moment le serveur ne reconnaît plus le SessionID et le fera. L'utilisateur est traité comme un nouvel utilisateur et un nouveau SessionID est à nouveau attribué.
Création de cookies :
Créer un cookie nom d'utilisateur sur le client d'une valeur de gjy et d'une durée de validité de 1 jour
Méthode 1. :
Response.Cookies["username"].Value="zxf"; Response.Cookies["username"].Expires=DateTime.Now.AddDays(1);
Méthode 2 :
System.Web.HttpCookie newcookie=new HttpCookie("username"); newcookie.Value="gjy"; newcookie.Expires=DateTime.Now.AddDays(1); Response.AppendCookie(newcookie);
Créer des cookies avec des sous-clés :
System.Web.HttpCookie newcookie=new HttpCookie("user"); newcookie.Values["username"]="zxf"; newcookie.Values["password"]="111"; newcookie.Expires=DateTime.Now.AddDays(1); Response.AppendCookie(newcookie);
ou :
System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
Lire les cookies :
Lire sans sous-clé :
if(Request.Cookies["username"]!=null) { Response.Write(Server.UrlDecode(Request.Cookies["username"]));
ou :
HttpContext.Current.Request.Cookies[strCookieName] }
Lire avec sous-clé :
if(Request.Cookies["user"]!=null) { Response.Write(Server.UrlDecode(Request.Cookies["user"]["username"].Value)); Response.Write(Server.UrlDecode(Request.Cookies["user"]["password"].Value));
Deux façons d'ajouter et de lire :
Ajouter :
Response.AppendCookie(newcookie); System.Web.HttpContext.Current.Response.Cookies.Add(Cookie);
Lire :
Request.Cookies["username"] HttpContext.Current.Request.Cookies["username"]
Tant que vous ne définissez pas de délai d'expiration pour le cookie, le cookie expirera automatiquement à la fermeture du navigateur
Supprimez l'heure de modification du cookie : Cookie.Expires = DateTime.Now.AddDays(-1);
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public class Cookie { /// <summary> /// Cookies赋值 /// </summary> /// <param name="strName">主键</param> /// <param name="strValue">键值</param> /// <param name="strDay">有效天数</param> /// <returns></returns> public bool setCookie(string strName, string strValue, int strDay) { try { HttpCookie Cookie = new HttpCookie(strName); //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com Cookie.Expires = DateTime.Now.AddDays(strDay); Cookie.Value = strValue; System.Web.HttpContext.Current.Response.Cookies.Add(Cookie); return true; } catch { return false; } } /// <summary> /// 读取Cookies /// </summary> /// <param name="strName">主键</param> /// <returns></returns> public string getCookie(string strName) { HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName]; if (Cookie != null) { return Cookie.Value.ToString(); } else { return null; } } /// <summary> /// 删除Cookies /// </summary> /// <param name="strName">主键</param> /// <returns></returns> public bool delCookie(string strName) { try { HttpCookie Cookie = new HttpCookie(strName); //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com Cookie.Expires = DateTime.Now.AddDays(-1); System.Web.HttpContext.Current.Response.Cookies.Add(Cookie); return true; } catch { return false; } } }
Exemple :
Cookie Cookie = new Cookie(); Cookie.setCookie("name", "aaa",1);//赋值 Cookie.getCookie("name");//取值 Cookie.delCookie("name");//删除
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public class Cookie { /// <summary> /// Cookies赋值 /// </summary> /// <param name="strName">主键</param> /// <param name="strValue">键值</param> /// <param name="strDay">有效天数</param> /// <returns></returns> public bool setCookie(string strName, string strValue, int strDay) { try { HttpCookie Cookie = new HttpCookie(strName); //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com Cookie.Expires = DateTime.Now.AddDays(strDay); Cookie.Value = strValue; System.Web.HttpContext.Current.Response.Cookies.Add(Cookie); return true; } catch { return false; } } /// <summary> /// 读取Cookies /// </summary> /// <param name="strName">主键</param> /// <returns></returns> public string getCookie(string strName) { HttpCookie Cookie = System.Web.HttpContext.Current.Request.Cookies[strName]; if (Cookie != null) { return Cookie.Value.ToString(); } else { return null; } } /// <summary> /// 删除Cookies /// </summary> /// <param name="strName">主键</param> /// <returns></returns> public bool delCookie(string strName) { try { HttpCookie Cookie = new HttpCookie(strName); //Cookie.Domain = ".xxx.com";//当要跨域名访问的时候,给cookie指定域名即可,格式为.xxx.com Cookie.Expires = DateTime.Now.AddDays(-1); System.Web.HttpContext.Current.Response.Cookies.Add(Cookie); return true; } catch { return false; } } }
Exemple :
Cookie Cookie = new Cookie(); Cookie.setCookie("name", "aaa",1);//赋值 Cookie.getCookie("name");//取值 Cookie.delCookie("name");//删除
Remarque : Apparaît lorsque le cookie est enregistré en chinois Si le code est tronqué, il sera encodé en chinois lors du stockage, tel que Cookie.setCookie("name", Server.UrlEncode("aaa"), 1), lire Il suffit de le décoder lorsque vous le récupérez
De plus : tant que vous ne définissez pas de délai d'expiration pour le cookie, le cookie expirera automatiquement à la fermeture du navigateur
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!