2010-10-06 14 views

risposta

65

I cookie hanno una data di scadenza impostata in modo implicito o esplicito che controlla per quanto tempo durano (a condizione che l'agente utente lo imponga effettivamente). Un cookie può persistere solo per la durata della sessione (o un periodo ancora più breve).

Se un cookie è valido, verrà inoltrato insieme alla richiesta HTTP al dominio da cui proviene. Solo il dominio che imposta il cookie può leggere il cookie (sebbene ci siano modi per sfruttarlo, come lo scripting cross-site).

  • Se si desidera un cookie scada in un momento specifico, impostare una scadenza data su di essa utilizzando il client o il linguaggio server-side di vostra scelta.

  • Se si desidera che il cookie scada al termine della sessione, non impostare una data di scadenza .

From the RFC (emphasis mine):

Il setter cookie può specificare una data cancellazione, nel qual caso il cookie sarà rimosso in quella data.

Se il setter biscotto non specifica una data, il cookie viene rimosso una volta che l'utente chiude proprio browser.

Come risultato, specificare una data è un modo per fare sopravvivere un cookie tra le sessioni . Per questo motivo, i cookie con una data di scadenza sono chiamati persistenti.

Come applicazione esempio, un sito di shopping può utilizzare persistenti i cookie per memorizzare le voci utenti hanno collocati nel loro cestino. (In realtà, il cookie può riferirsi a una voce in un database conservati presso il sito di shopping, non sul computer.) In questo modo, se gli utenti a smettere la loro browser senza fare un acquisto e tornare più tardi, ancora trova gli stessi articoli nel carrello in modo che non debbano cercare ancora questi articoli . Se a questi cookie non è stata data una data di scadenza, scadrà quando il browser è chiuso e le informazioni sul contenuto del carrello andranno perse.

+0

E se desidero solo che il cookie persista per la sessione, quale scadenza devo impostare? –

+0

Vedi la mia modifica. –

+0

Grazie! Significa che qualsiasi clausola Set-Cookie senza scadenza sarà un cookie di sessione e andrà persa una volta riavviato il browser? Perché non è quello che vedo ... Una volta che faccio un Set-Cookie senza scadenza, e riavvio il browser, posso ancora leggere quel cookie. È previsto? –

5

cookie di sessione

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

biscotto con un certo time-stamp (.NET DateTime library)

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

Persistent Cookie

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

Ci due tipi di cookie in ASP.NET

cookie persistenti:

I cookie vengono memorizzati sul disco rigido del computer. Rimangono sul disco rigido e sono accessibili dai server Web fino a quando non vengono eliminati o scaduti.

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

non-persistenti cookie:

cookie vengono salvati solo quando il browser web è in esecuzione. Possono essere utilizzati da un server Web solo fino alla chiusura del browser. Non vengono salvati sul tuo disco.

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

    cookie.Value = value; 

    Response.Cookies.Add(cookie); 
}