web-dev-qa-db-fra.com

Comment créer un cookie persistant vs un cookie non persistant?

Je n'arrive pas à comprendre comment créer un cookie persistant vs un cookie non persistant. En quoi diffèrent-ils, par exemple, dans les en-têtes HTTP renvoyés?

53
Chung Wu

Les cookies ont une date d'expiration implicitement ou explicitement définie qui contrôle leur durée de vie (sous réserve que l'agent utilisateur les applique réellement). Un cookie ne peut persister que pendant la durée de la session (ou une période encore plus courte).

Si un cookie est valide, il sera transmis avec la demande HTTP au domaine dont il est issu. Seul le domaine qui a défini le cookie peut lire le cookie (bien qu'il existe des moyens d'exploiter cela, comme les scripts intersites).

  • Si vous souhaitez qu'un cookie expire à une heure spécifique, définissez-y une date d'expiration à l'aide de la langue côté client ou côté serveur de votre choix.

  • Si vous souhaitez que le cookie expire à la fin de la session, ne définissez pas de date d'expiration.

De la RFC (accentuation de la mienne):

Le cookie setter peut spécifier une date de suppression, auquel cas le cookie sera supprimé à cette date.

Si le créateur de cookies ne spécifie pas de date, le cookie est supprimé une fois que l'utilisateur quitte son navigateur.

Par conséquent, la spécification d'une date est un moyen de faire survivre un cookie à travers les sessions. Pour cette raison, les cookies avec une date d'expiration sont appelés persistants.

À titre d'exemple d'application, un site d'achat peut utiliser des cookies persistants pour stocker les articles que les utilisateurs ont placés dans leur panier. (En réalité, le cookie peut faire référence à une entrée dans une base de données stockée sur le site d'achat, pas sur votre ordinateur.) De cette façon, si les utilisateurs quittent leur navigateur sans effectuer d'achat et reviennent plus tard, ils trouvent toujours les mêmes articles dans le panier afin qu'ils n'aient plus à chercher ces articles. Si ces cookies n'avaient pas de date d'expiration, ils expireraient lorsque le navigateur serait fermé et les informations sur le contenu du panier seraient perdues.

71
Tim Medora

Il existe deux types de cookies dans ASP.NET

Cookies persistants:

Les cookies sont stockés sur le disque dur de votre ordinateur. Ils restent sur votre disque dur et sont accessibles par les serveurs Web jusqu'à leur suppression ou leur expiration.

public void SetPersistentCookies(string name, string value)
{
    HttpCookie cookie = new HttpCookie(name);

    cookie.Value = value;

    cookie.Expires = Convert.ToDateTime(“12/12/2008″);

    Response.Cookies.Add(cookie);
}

Cookies non persistants:

Les cookies sont enregistrés uniquement lorsque votre navigateur Web est en cours d'exécution. Ils ne peuvent être utilisés par un serveur Web que jusqu'à ce que vous fermiez votre navigateur. Ils ne sont pas enregistrés sur votre disque.

public void SetNonPersistentCookies(string name, string value)
{
    HttpCookie cookie = new HttpCookie(name);

    cookie.Value = value;

    Response.Cookies.Add(cookie);
}
10
Deepak.Aggrawal

Cookie de session

HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
Response.Cookies.Add(cookie);

Cookie avec un certain horodatage ( bibliothèque .NET DateTime )

HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
cookie.Expires = DateTime.Today.AddMonths(12); //or AddMinutes, or AddHours...
Response.Cookies.Add(cookie);

Cookie persistant

HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
cookie.Expires = DateTime.MaxValue;
Response.Cookies.Add(cookie);
6
expertCode