Il protocollo HTTP è di tipo stateless: ciascuna "richiesta" è indipendente dalle altre.
Questo fatto, se da un lato limita le connessioni attive (le pagine web contengono link a, o hanno contenuti ospitati su, altri server), dall'altro pone problemi di sviluppo e fruizione dei contenuti.
Per ovviare a ciò, i siti web inviano al client dei piccoli file, i cookie di sessione, che vengono conservati sui client.
Senza i cookie, ad esempio, non vi sarebbe differenza in una pagina caricata prima di effettuare un login, dalla stessa pagina caricata dopo.
E non potresti caricare il "carrello della spesa" in un sito di e-commerce.
Il problema è l'abuso che se ne fa.
In genere il client, attraverso la configurazione del browser, può decidere se e quali cookie accettare (anche in base all'analisi dei contenuti).
Come detto, però spesso questi servono al normale funzionamento delle pagine web.
Se possibile, e se il browser non lo fa in modo autonomo, quelli più vecchi andrebbero eliminati.
I cookie hanno comunque un campo che gestisce la scadenza (expiration date).