Chrome non elimina i cookie di sessione


188

Sto cercando di impostare i cookie di sessione in javascript in questo modo:

document.cookie = 'name=alex; path=/'

Ma Chrome non lo elimina anche se esco dal browser e lo riavvio.

Ho controllato Firefox e Opera ed entrambi funzionano come previsto: eliminano i cookie di sessione all'uscita dal browser.

Chrome sta semplicemente ignorando le regole di scadenza?

Ho controllato più sistemi operativi e ho scoperto che i cookie di sessione vengono rimossi su Chrome in Windows XP e Ubuntu, ma NON in Mac OSX Lion.


1
Era esattamente come nel mio post, cioè senza scadenza, non sono sicuro di Httponly. Non sto cercando di eliminarlo a mano. Il problema è che i browser dovrebbero eliminarlo all'uscita ma Chrome non lo fa.
mg

>>> e ho scoperto che il cookie di sessione viene rimosso su Chrome in Windows XP. No. In Windows XP Chrome non elimina anche i cookie. Ora uso Windows XP e ho trovato la tua domanda perché ho lo stesso problema. L'unica differenza è che uso ZF2 e imposto le opzioni di sessione tramite il pacchetto Session. Ma è comunque normale php - ini_set("session.cookie_lifetime", 0)e 'remember_me_seconds' => 1. Ma non aiuta. Firefox funziona bene, ma Chrome no.
Verde

Risposte:


222

3
E ho provato a formattare bene il mio commento con le interruzioni di riga, ma il sistema sciocco ha rimosso anche quelle interruzioni di linea ... Dai, Stackoverflow, crea un sistema migliore! Sto spendendo tempo per rendere leggibili i miei commenti, per essere di ulteriore aiuto per i lettori, e poi tu li rovini prima credendo stupidamente che io sia uno spammer e poi rimuovendo le interruzioni di riga!
Jesper,

2
Nota: puoi riscontrare lo stesso identico problema in Firefox se hai la selezione "Mostra finestre e schede dell'ultima volta" per il menu a discesa "All'avvio di Firefox" nelle opzioni. Per la stessa ragione. In base alla progettazione, i cookie di sessione vengono conservati per aiutare a mantenere il flusso di lavoro in caso di arresto del browser.
webnesto,

40
Sì. Chrome e FF interrompono entrambi la funzionalità dei cookie di sessione per questo motivo. Per Chrome, il problema è stato segnalato: code.google.com/p/chromium/issues/detail?id=128513 e contrassegnato WONTFIX. Quindi, ovviamente, Google non si preoccupa di seguire gli standard web e le falle di sicurezza in Chrome e nemmeno FF. Vedi bug FF (almeno non chiuso): bugzilla.mozilla.org/show_bug.cgi?id=443354 Che triste stato per questi due browser.
lucian303,

4
w3.org/Protocols/rfc2109/rfc2109 : Max- Age Il comportamento predefinito è di scartare il cookie all'uscita dall'agente utente.
lucian303,

2
@ lucian303, anche se questa sembra una violazione degli standard, non credo che tu possa avere "continuare a navigare dall'ultima volta" senza "mantenere attivi i cookie di sessione". Opera, rekonq e IE9 (tramite il collegamento "Riapri ultima sessione" nella pagina Nuova scheda), ad esempio, implementano il primo senza il secondo. Di conseguenza, tali browser possono mostrarti pagine memorizzate nella cache che indicano erroneamente che hai ancora effettuato l'accesso e / o che hanno token di protezione CSRF stalati.
Sayap

25

Ho avuto lo stesso problema con un cookie impostato per scadere alla fine della sessione di navigazione.

Purtroppo non è così, ho giocato un po 'con le impostazioni del browser.

Si è scoperto che la funzione che ricorda le schede aperte alla chiusura del browser era la radice del problema. (La funzione si chiama "All'avvio" - "Continua da dove avevo interrotto". Almeno sulla versione corrente di Chrome).

Questo succede anche con Opera e Firefox.


Questo ha risolto subito il problema per me! Bello sapere perché le cose accadono nel modo in cui accadono :)
riflessi veloci

5
Inaccettabile. Non voglio che Chrome dimentichi quali finestre erano aperte, perché troppo spesso ho lasciato Chrome accidentalmente con molte schede aperte. (Grazie OS X per avermi permesso di scorrere una finestra che non ha lo stato attivo, portandomi a pensare che abbia lo stato attivo. Ma, storia diversa). Se devo accedere di nuovo, così sia. Non disconnettermi quando esco deliberatamente rende difficile assicurarmi di non aver effettuato l'accesso da nessuna parte, il che può essere un GRANDE problema di sicurezza.
Michael

5
Almeno questa opzione non è abilitata per impostazione predefinita. Questa "funzione" è menzionata anche nella Guida di Google : "Chrome ripristinerà anche i dati di navigazione e i cookie di sessione ". IMO questa dovrebbe essere un'opzione secondaria aggiuntiva sotto "Continua da dove avevo interrotto".
Mr White,

Per inciso, questo non sembra più essere un "problema" con Opera (testato Opera 22, anche se non ho notato che è un problema per almeno una versione o due). Firefox 29 ripristina i cookie di sessione quando è selezionata la corrispondente "Mostra finestre e schede dall'ultima volta" (come da documentazione).
MrWhite,

2
@Michael Il che non ha molto senso in quanto la maggior parte dei siti Web che utilizzano le sessioni non ti consentiranno di tornare sulla pagina in cui ti trovavi se ti sei disconnesso. Quindi vuoi che il browser continui da dove eri rimasto o no?
Deji,

21

Ho appena avuto questo problema. Ho notato che anche dopo aver chiuso il browser avevo molti processi Chrome in esecuzione. Si scopre che questi erano ciascuno dalla mia estensione di Chrome.

Con le impostazioni avanzate ho deselezionato 'Continue running background apps when Google Chrome is closed'e i miei cookie di sessione hanno iniziato a funzionare come dovrebbero.

Ancora un problema nella parte posteriore per tutti noi sviluppatori che hanno programmato la codifica aspettandosi che i cookie di sessione vengano cancellati quando l'utente ha finito di navigare.


Normalmente le "app in background" non hanno nulla a che fare con la persistenza dei cookie di sessione (a meno che tu non abbia un'estensione che ricordi i cookie di sessione ?!). L'opzione "Continua da dove avevo interrotto" nelle impostazioni ripristina anche i cookie di sessione (come indicato in un'altra risposta).
Mr White,

1
Funziona, dopo aver disabilitato questa opzione ottengo la cancellazione dei cookie di sessione!
Walid Ammar,

Questo è davvero un altro motivo che impedisce ai cookie di sessione di essere cancellati. Grazie.
L-Four

10

Questo forse perché Chrome è ancora in esecuzione in background dopo aver chiuso il browser. Prova a disabilitare questa funzione procedendo come segue:

  1. Apri chrome: // settings /
  2. Fai clic su "Mostra impostazioni avanzate ..."
  3. Passa alla sezione Sistema e disabilita "Continua a eseguire le app in background quando Google Chrome è chiuso". Ciò costringerà Chrome a chiudere completamente e quindi eliminerà i cookie di sessione.

Tuttavia, penso che Chrome dovrebbe controllare ed eliminare i cookie della sessione precedente all'avvio anziché alla chiusura.


10

Ho dovuto entrambi, deselezionato, nelle impostazioni avanzate di Chrome:

  • "Continua a eseguire app in background quando Google Chrome è chiuso"
  • "Continua da dove avevo interrotto", "All'avvio"

Questo dovrebbe essere votato più in alto, oppure la risposta migliore dovrebbe essere modificata per includere il punto "esecuzione di app in background". Questo mi ha colpito. La disattivazione di "Continua da dove mi ero interrotto" non ha risolto il problema. Ho dovuto anche disattivare "Continua a eseguire app in background quando Google Chrome è chiuso". Quindi, i miei cookie di sessione venivano eliminati correttamente quando ho chiuso Chrome.
Matt Welke,

Penso che questa sia davvero la migliore risposta.
L-Four

3

Una semplice alternativa è utilizzare il nuovo oggetto sessionStorage . Secondo i commenti, se è stata selezionata l'opzione "continua da dove avevo interrotto", sessionStorage persisterà tra i riavvii.


9
No, persiste tra i riavvii, se hai selezionato "Continua da dove avevo interrotto".
Olli,

TimDog: "sessionStorage persisterà tra i riavvi.", @Olli "No, persiste tra i riavvii". Ragazzi, siete d'accordo o discutete? Non capisco :) Ah, aspetta, ho capito ...
naXa,

2

Ho avuto lo stesso problema con "document.cookie" in Windows 8.1, l'unico modo in cui Chrome elimina il cookie era chiuderlo dal task manager (non in modo davvero fantasioso), quindi ho deciso di gestire i cookie dal back-end o utilizzare qualcosa come "js-cookie".


1

Hai provato a rimuovere l'estensione Hangouts in Google Chrome? perché forza Chrome per continuare a funzionare anche se chiudi tutte le finestre.

Stavo anche affrontando il problema, ma ora è stato risolto.


1

Vai a chrome://settings/content/cookies?search=cookies

Attiva Clear cookies and site data when you quit Chrome.

Ha funzionato per me


-2

Se imposti il ​​dominio per il cookie della sessione php, i browser sembrano trattenerlo per circa 30 secondi. Non sembra importare se chiudi la scheda o la finestra del browser.

Pertanto, se gestisci sessioni utilizzando qualcosa di simile al seguente, il cookie potrebbe rimanere bloccato nel browser più a lungo del previsto.

ini_set("session.cookie_domain", 'www.domain.com');

L'unico modo in cui ho trovato di eliminare il cookie sospeso è rimuovere la riga di codice che imposta il dominio del cookie di sessione. Fai anche attenzione alla funzione session_set_cookie_params (). Pare che il prefisso del dominio non influisca sul problema.

Potrebbe trattarsi di un bug php poiché php invia un cookie di sessione (ovvero PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) nell'intestazione dopo che la sessione è stata distrutta. Oppure potrebbe trattarsi di un problema di propagazione del server, ma non credo che il mio test fosse su un server privato.


-2

Ho appena avuto questo problema di Chrome con l'archiviazione di un ID sessione, ma non mi piace l'idea di disabilitare l'opzione per continuare da dove avevo interrotto. Ho esaminato i cookie per il sito Web e ho trovato un cookie ID sessione per la pagina di accesso. L'eliminazione che non ha corretto il mio problema. Cerco il dominio e ho trovato un altro cookie ID sessione sul dominio. L'eliminazione di entrambi i cookie ID sessione ha risolto manualmente il problema e non ho chiuso e riaperto il browser che avrebbe potuto ripristinare i cookie.



-8

Google Chrome ha un problema se imposti e disattivi i cookie in modo errato. Questo è il codice php. Pensato che questo ti darà un'idea.

Imposta cookie

setcookie('userLoggedIn', 1, 0, PATH);

Modo sbagliato e non funzionerà (notare che manca il PERCORSO)

setcookie('userLoggedIn', 0, time()-3600);

Il modo corretto risolve il problema su Google Chrome

setcookie('userLoggedIn', 0, time()-3600, PATH);

1
La domanda non riguarda un cookie improprio.
John K,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.