Se non imposti una scadenza per il cookie di sessione, il browser lo cancellerà ogni volta che il browser viene chiuso.
Set-Cookie: SessionId=1ogf87b04oajp1lvkrid2iciskd2acug; path=/; HttpOnly
Questo ti lascia con la domanda di scadere della sessione.
Questo dovrebbe essere fatto dal controllo sul lato server: su ogni richiesta (valida), memorizza il tempo della richiesta in / per questa sessione. Ogni volta che viene effettuata una richiesta successiva, verificare l'ora corrente rispetto al tempo di richiesta precedente. Se l'ultima attività era più di X minuti fa, considera la sessione scaduta e espira esplicitamente il cookie di sessione impostando una scadenza molto indietro. L'impostazione di un tempo di scadenza del cookie molto indietro nel passato (ad esempio nel 1971-01-01 dirà al cliente che è in grado di raccogliere i cookie di sessione, assicurandosi comunque di eseguire l'effettiva scadenza sul lato server.
Set-Cookie: SessionId=false; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/
Non dovresti fare affidamento su script client o simili, non è necessario per la gestione delle sessioni (e non può essere comunque implementato in modo affidabile).
Modificato per aggiungere:
Alcuni framework hanno una buona implementazione di sessione, mentre la maggior parte fa un lavoro OK-ish. Tuttavia, alcuni (sto guardando voi Zend Framework) sono decisamente sbagliati. Cerca di assicurarti di capire quali sono i cookie inviati e di non confondere il cookie di sessione con, ad esempio, un cookie "ricordami".