2010-10-06 19 views

Respuesta

65

Las cookies tienen una fecha de caducidad implícita o explícita que controla cuánto tiempo duran (sujeto a que el agente del usuario las aplique). Una cookie puede persistir solo por la duración de la sesión (o un período aún más corto).

Si una cookie es válida, se pasará junto con la solicitud HTTP al dominio de donde proviene. Solo el dominio que establece la cookie puede leer la cookie (aunque hay formas de explotar esto, como la creación de scripts entre sitios).

  • Si desea una cookie expire en un momento específico, establezca una caducidad fecha en que mediante el cliente o el lenguaje de servidor de su elección.

  • Si desea que la cookie expire cuando finaliza la sesión, no establezca una fecha de caducidad .

From the RFC (emphasis mine):

El colocador cookie puede especificar una fecha eliminación, en cuyo caso se eliminará la cookie en esa fecha.

Si el colocador de cookies no especifica una fecha , la cookie se elimina una vez que el usuario cierra su navegador.

Como resultado, especificar una fecha es una forma de haciendo que una cookie sobreviva durante las sesiones . Por este motivo, las cookies con fecha de caducidad se llaman persistentes.

Como ejemplo de aplicación, un sitio de compras puede utilizar persistentes cookies para almacenar los artículos usuarios han colocados en su cesta. (En realidad, la cookie puede referirse a una entrada en una base de datos almacenado en el sitio de compras, no en su ordenador.) De esta manera, si usuarios abandonan su navegador sin hacer una compra y volver más tarde, todavía encuentre los mismos artículos en la cesta para que no tengan que volver a buscar estos artículos. Si a estas cookies no se les dio una fecha de vencimiento, caducarán cuando el navegador esté cerrado, y se perderá la información sobre el contenido de la cesta .

+0

Y si solo quiero que la cookie persista en la sesión, ¿qué vencimiento debo establecer? –

+0

Por favor, mira mi edición. –

+0

¡Gracias! ¿Significa eso que cualquier Set-Cookie sin una cláusula expira será una cookie de sesión, y se perderá una vez que el navegador se reinicie? Porque eso no es lo que veo ... Una vez que hago una Set-Cookie sin caducar, y reinicio el navegador, aún puedo leer esa cookie. Es eso esperado? –

5

cookie de sesión

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

galleta con una cierta marca de tiempo (.NET DateTime library)

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

persistente Cookies

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

Hay dos tipos de cookies en ASP.NET

cookies persistentes:

Las cookies se almacenan en el disco duro del ordenador. Permanecen en su disco duro y los servidores web pueden acceder hasta que se eliminen o caduquen.

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); 
} 

las cookies no persistentes:

cookies se guardan sólo mientras el navegador Web se está ejecutando. Solo pueden ser utilizados por un servidor web hasta que cierre su navegador. No están guardados en tu disco.

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

    cookie.Value = value; 

    Response.Cookies.Add(cookie); 
} 
Cuestiones relacionadas