Chrome ne supprime pas les cookies de session

188

J'essaie de définir un cookie de session en javascript comme ceci:

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

Mais Chrome ne le supprime pas même si je quitte le navigateur et le relance.

J'ai vérifié dans Firefox et Opera et les deux fonctionnent comme prévu - ils suppriment le cookie de session à la sortie du navigateur.

Chrome ignore-t-il simplement les règles d'expiration?

J'ai vérifié dans plusieurs systèmes d'exploitation et j'ai découvert que le cookie de session était supprimé sur Chrome sous Windows XP et Ubuntu, mais PAS sous Mac OSX Lion.

mgs
la source
1
C'était exactement comme dans mon post c'est à dire sans expiration, pas sûr de Httponly. Je n'essaye pas de le supprimer manuellement. Le problème est que les navigateurs doivent le supprimer à la sortie, mais Chrome ne le fait tout simplement pas.
mgs
>>> et a découvert que le cookie de session est supprimé sur Chrome dans Windows XP. Non. Dans Windows XP, Chrome ne supprime pas non plus les cookies. J'utilise maintenant Windows XP et j'ai trouvé votre question car j'ai le même problème. La seule différence est que j'utilise ZF2 et que je définis les options de session via le package Session. Mais c'est de toute façon habituel php - ini_set("session.cookie_lifetime", 0)et 'remember_me_seconds' => 1. Mais ça n'aide pas. Firefox fonctionne bien, mais pas Chrome.
Vert

Réponses:

222

Cela peut être dû au fait que Chrome est défini sur Continuer là où vous vous êtes arrêté .

entrez la description de l'image ici

Lectures complémentaires

Jesper
la source
3
Et j'ai essayé de bien formater mon commentaire avec des sauts de ligne, mais le système stupide a également supprimé ces sauts de ligne ... Allez, Stackoverflow, faites un meilleur système! Je passe du temps à rendre mes commentaires lisibles, à être très utiles aux lecteurs, puis vous le gâchez d'abord en croyant bêtement que je suis un spammeur, puis en supprimant les sauts de ligne!
Jesper
2
Remarque: vous pouvez rencontrer exactement le même problème dans Firefox si vous avez la sélection "Afficher mes fenêtres et onglets de la dernière fois" pour le menu déroulant "Quand Firefox démarre" dans les options. Pour la même raison. De par leur conception, les cookies de session sont conservés pour aider à maintenir le flux de travail en cas de panne du navigateur.
webnesto
40
Ouaip. Chrome et FF interrompent tous deux la fonctionnalité des cookies de session à cause de cela. Pour Chrome, le problème a été signalé: code.google.com/p/chromium/issues/detail?id=128513 et marqué WONTFIX. Donc, évidemment, Google ne se soucie pas du respect des normes Web et des failles de sécurité dans Chrome et FF non plus. Voir le bogue FF (du moins non fermé): bugzilla.mozilla.org/show_bug.cgi?id=443354 Quel triste état pour ces deux navigateurs.
lucian303
4
w3.org/Protocols/rfc2109/rfc2109 : Max- Age Le comportement par défaut est de supprimer le cookie lorsque l'agent utilisateur se ferme.
lucian303
2
@ lucian303, bien que cela ressemble à une violation des normes, je ne pense pas que vous puissiez avoir "continuer à naviguer depuis la dernière fois" sans "garder le cookie de session en vie". Opera, rekonq et IE9 (via le lien «Rouvrir la dernière session» dans la page Nouvel onglet), par exemple, implémentent le premier sans le second. En conséquence, ces navigateurs peuvent vous montrer des pages mises en cache qui indiquent à tort que vous êtes toujours connecté et / ou que vous avez stalé le jeton de protection CSRF.
sayap
25

J'ai juste eu le même problème avec un cookie qui devait expirer à la "fin de la session de navigation".

Malheureusement, ce n'est pas le cas, j'ai donc joué un peu avec les paramètres du navigateur.

Il s'est avéré que la fonctionnalité qui se souvient des onglets ouverts lorsque le navigateur est fermé était à l'origine du problème. (La fonctionnalité est nommée "Au démarrage" - "Continuer là où je l'ai laissé". Au moins sur la version actuelle de Chrome).

Cela se produit également avec Opera et Firefox.

Nikola Kolev
la source
Cela a résolu le problème tout de suite pour moi! C'est bien de savoir pourquoi les choses se passent comme elles le font :)
fast-reflexes
5
Inacceptable. Je ne veux pas que Chrome oublie les fenêtres ouvertes, car je quitte trop souvent Chrome par inadvertance avec de nombreux onglets ouverts. (Merci OS X de m'avoir permis de faire défiler une fenêtre qui n'a pas de focus, ce qui m'amène à penser qu'il a du focus. Mais, histoire différente). Si je dois me reconnecter, qu'il en soit ainsi. Ne pas me déconnecter lorsque je quitte délibérément rend difficile de m'assurer que je ne suis toujours pas connecté, ce qui peut être un gros problème de sécurité.
Michael
5
Au moins, cette option n'est pas activée par défaut. Cette "fonctionnalité" est également mentionnée dans l' aide de Google : "Chrome restaurera également vos données de navigation et vos cookies de session. ". OMI, cela devrait être une sous-option supplémentaire sous "Continuer là où j'ai laissé".
MrWhite
Incidemment, cela ne semble plus être un "problème" avec Opera (testé Opera 22, même si je n'ai pas remarqué que c'était un problème pour au moins une version ou deux). Firefox 29 restaure les cookies de session lorsque le "Afficher mes fenêtres et onglets de la dernière fois" correspondant est coché (selon la documentation).
MrWhite
2
@Michael Ce qui n'a pas beaucoup de sens car la plupart des sites Web utilisant des sessions ne vous permettront pas de revenir sur la page sur laquelle vous étiez si vous avez été déconnecté. Voulez-vous que le navigateur continue là où vous l'avez laissé ou non?
Deji
21

J'ai juste eu ce problème. J'ai remarqué que même après avoir fermé mon navigateur, de nombreux processus Chrome étaient en cours d'exécution. Il s'avère que ceux-ci provenaient chacun de mon extension Chrome.

Sous les paramètres avancés, j'ai décoché 'Continue running background apps when Google Chrome is closed' et mes cookies de session ont commencé à fonctionner comme ils le devraient.

Encore une douleur à l'arrière pour tous les développeurs qui ont codé en espérant que les cookies de session seraient effacés lorsque l'utilisateur a terminé sa navigation.

NSjonas
la source
Normalement, les "applications d'arrière-plan" n'ont rien à voir avec la persistance des cookies de session (à moins que vous n'ayez peut-être une extension qui mémorise vos cookies de session ?!). L'option "Continuer là où j'ai laissé" dans les paramètres restaure également les cookies de session (comme mentionné dans une autre réponse).
MrWhite
1
Cela fonctionne, après avoir désactivé cette option, mes cookies de session sont effacés!
Walid Ammar
C'est en effet une autre raison qui empêche la suppression des cookies de session. Merci.
L-Four
10

C'est peut-être parce que Chrome fonctionne toujours en arrière-plan après la fermeture du navigateur. Essayez de désactiver cette fonctionnalité en procédant comme suit:

  1. Ouvrez chrome: // paramètres /
  2. Cliquez sur "Afficher les paramètres avancés ..."
  3. Accédez à la section Système et désactivez "Continuer à exécuter les applications d'arrière-plan lorsque Google Chrome est fermé". Cela forcera Chrome à se fermer complètement, puis supprimera les cookies de session.

Cependant, je pense que Chrome devrait vérifier et supprimer les cookies de session précédente au début au lieu de se fermer.

Justmyhobby
la source
10

J'ai dû faire les deux, décoché, dans les paramètres avancés de Chrome:

  • "Continuer à exécuter les applications d'arrière-plan lorsque Google Chrome est fermé"
  • "Continuer là où je m'étais arrêté", "Au démarrage"
emottet
la source
Cela devrait être voté plus haut, ou la première réponse devrait être modifiée pour inclure le point "applications en arrière-plan en cours d'exécution". Cela m'a affecté. La désactivation de "Continuer là où j'ai laissé" ne l'a pas résolu. J'ai également dû désactiver "Continuer à exécuter les applications d'arrière-plan lorsque Google Chrome est fermé". Ensuite, mes cookies de session ont été supprimés correctement lorsque j'ai fermé Chrome.
Matt Welke
Je pense que c'est en effet la meilleure réponse.
L-Four
3

Une alternative simple consiste à utiliser le nouvel objet sessionStorage . Selon les commentaires, si vous avez coché «Continuer là où j'ai laissé», sessionStorage persistera entre les redémarrages.

TimDog
la source
9
Non, il persiste entre les redémarrages, si vous avez coché "Continuer là où j'ai laissé".
Olli
TimDog: "sessionStorage persistera entre les redémarrages.", @Olli "Non, il persiste entre les redémarrages". Les gars, êtes-vous d'accord ou discutez-vous? Je ne comprends pas :) Ah, attendez, je comprends ...
naXa
2

J'ai eu le même problème avec "document.cookie" dans Windows 8.1, le seul moyen pour Chrome de supprimer le cookie était de le fermer du gestionnaire de tâches (pas vraiment sophistiqué), j'ai donc décidé de gérer les cookies depuis le backend ou d'utiliser quelque chose comme "js-cookie".

TurKux
la source
1

Avez-vous essayé de supprimer l'extension Hangouts dans Google Chrome? car cela oblige Chrome à continuer de fonctionner même si vous fermez toutes les fenêtres.

J'étais également confronté au problème, mais il est maintenant résolu.

Salman Ali Khan
la source
1

Aller à chrome://settings/content/cookies?search=cookies

Activer Clear cookies and site data when you quit Chrome .

A travaillé pour moi

Mihai Perju
la source
-2

Si vous définissez le domaine pour le cookie de session php, les navigateurs semblent le conserver pendant environ 30 secondes. Cela n'a pas d'importance si vous fermez l'onglet ou la fenêtre du navigateur.

Donc, si vous gérez des sessions en utilisant quelque chose comme ce qui suit, cela peut entraîner le blocage du cookie dans le navigateur plus longtemps que prévu.

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

Le seul moyen que j'ai trouvé pour me débarrasser du cookie suspendu est de supprimer la ligne de code qui définit le domaine du cookie de session. Attention également à la fonction session_set_cookie_params (). Le préfixe de points du domaine ne semble pas non plus avoir d'incidence sur le problème.

Cela pourrait être un bogue php car php envoie un cookie de session (c'est-à-dire PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) dans l'en-tête après la destruction de la session. Ou cela peut être un problème de propagation de serveur mais je ne le pense pas puisque mon test était sur un serveur privé.

SurferJoe
la source
-2

Je viens d'avoir ce problème de stockage d'un identifiant de session par Chrome, mais je n'aime pas l'idée de désactiver l'option pour continuer là où je m'étais arrêté. J'ai regardé les cookies du site Web et trouvé un cookie d'identification de session pour la page de connexion. Supprimer cela n'a pas résolu mon problème. Je recherche le domaine et j'ai trouvé qu'il y avait un autre cookie d'identifiant de session sur le domaine. La suppression des deux cookies d'ID de session a résolu manuellement le problème et je n'ai pas fermé et rouvert le navigateur qui aurait pu restaurer les cookies.

Lauren Tariel
la source
-8

Google Chrome a un problème si vous définissez et désélectionnez les cookies de manière incorrecte. Ceci est du code php. Je pensais que cela vous donnerait une idée.

Définir le cookie

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

Mauvaise façon et ne fonctionnera pas (notez que PATH est manquant)

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

Une manière correcte résout le problème sur Google Chrome

setcookie('userLoggedIn', 0, time()-3600, PATH);
Akash Thapa
la source
1
La question ne concerne pas un cookie inapproprié.
John K