Chrome não exclui cookies de sessão


188

Estou tentando definir o cookie de sessão em javascript como este:

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

Mas o Chrome não o exclui, mesmo que eu saia do navegador e o inicie novamente.

Fiz o check-in no Firefox e Opera e ambos funcionam conforme o esperado - eles excluem o cookie da sessão na saída do navegador.

O Chrome está apenas ignorando as regras de expiração?

Fiz o check-in em vários sistemas operacionais e descobri que o cookie de sessão é removido no Chrome no Windows XP e no Ubuntu, mas NÃO no Mac OSX Lion.


1
Foi exatamente como no meu post, ou seja, sem vencimento, não tenho certeza sobre Httponly. Não estou tentando excluí-lo manualmente. O problema é que os navegadores devem excluí-lo na saída, mas o Chrome simplesmente não faz isso.
mgs 16/05

>>> e descobriu que o cookie de sessão é removido no Chrome no Windows XP. Não. No Windows XP, o Chrome também não exclui os cookies. Eu uso agora o Windows XP e encontrei sua pergunta porque tenho o mesmo problema. A única diferença é que eu uso o ZF2 e defino as opções de sessão através do pacote Session. Mas é maneira PHP usual de qualquer maneira - ini_set("session.cookie_lifetime", 0)e 'remember_me_seconds' => 1. Mas não ajuda. O Firefox funciona bem, mas o Chrome não.
Verde

Respostas:


222

3
E tentei formatar bem meu comentário com quebras de linha, mas o sistema tolo também removeu essas quebras de linha ... Vamos, Stackoverflow, crie um sistema melhor! Estou gastando tempo para tornar meus comentários legíveis, para ser mais útil para os leitores, e então você o estraga primeiro por acreditar tolamente que sou um spammer e depois removendo quebras de linha!
Jesper

2
Nota: você pode encontrar exatamente o mesmo problema no Firefox se tiver a seleção "Mostrar minhas janelas e guias da última vez" para a opção "Quando o Firefox iniciar" nas opções. Pela mesma razão. Por padrão, os cookies de sessão estão sendo retidos para ajudar a manter o fluxo de trabalho no caso de uma falha do navegador.
webnesto 5/09/12

40
Sim. Chrome e FF quebram a funcionalidade de cookies de sessão por causa disso. Para o chrome, o problema foi relatado: code.google.com/p/chromium/issues/detail?id=128513 e marcado WONTFIX. Então, obviamente, o Google não dá a mínima para seguir os padrões da web e as falhas de segurança no Chrome, nem o FF. Veja bug FF (pelo menos não fechado): bugzilla.mozilla.org/show_bug.cgi?id=443354 Que estado triste para esses dois navegadores.
lucian303

4
w3.org/Protocols/rfc2109/rfc2109 : Max-AgeO comportamento padrão é descartar o cookie quando o agente do usuário sair.
lucian303

2
@ lucian303, embora isso pareça uma violação dos padrões, acho que você não pode "continuar navegando da última vez" sem "manter o cookie de sessão ativo". Opera, rekonq e IE9 (por meio do link "Reabrir última sessão" na página Nova guia), por exemplo, implementam a primeira sem a segunda. Como resultado, esses navegadores podem mostrar páginas em cache que indicam erroneamente que você ainda está conectado e / ou possui o token de proteção CSRF.
sayap

25

Acabei de ter o mesmo problema com um cookie que estava definido para expirar em "Navegando no final da sessão".

Infelizmente isso não aconteceu, então eu brinquei um pouco com as configurações do navegador.

Aconteceu que o recurso que lembra as guias abertas quando o navegador é fechado era a raiz do problema. (O recurso é denominado "Na inicialização" - "Continuar de onde parei". Pelo menos na versão atual do Chrome).

Isso também acontece com o Opera e o Firefox.


Isso resolveu o problema imediatamente para mim! Bom saber porque as coisas acontecem da maneira que fazem :)
fast-reflexos

5
Inaceitável. Não quero que o Chrome esqueça quais janelas estavam abertas, porque muitas vezes eu acidentalmente saio do Chrome com muitas abas abertas. (Obrigado OS X por me deixar rolar uma janela que não tem foco, levando-me a pensar que TEM foco. Mas, uma história diferente). Se eu tiver que fazer login novamente, que assim seja. Não me desconectar quando parei deliberadamente dificulta a certeza de que não estou conectado em nenhum lugar ainda, o que pode ser um GRANDE problema de segurança.
Michael Michael

5
Pelo menos esta opção não está ativada por padrão. Esse "recurso" também é mencionado na Ajuda do Google : "O Chrome também restaurará seus dados de navegação e cookies de sessão ". Na IMO, essa deve ser uma subopção adicional em "Continuar de onde parei".
precisa saber é o seguinte

Aliás, isso não parece mais ser um "problema" com o Opera (teste o Opera 22, embora eu não tenha percebido que isso é um problema há pelo menos uma versão ou duas). O Firefox 29 restaura os cookies da sessão quando a opção "Mostrar minhas janelas e guias da última vez" correspondente é marcada (conforme a documentação).
precisa saber é o seguinte

2
@ Michael O que não faz muito sentido, pois a maioria dos sites que usam sessões não permite que você retorne à página em que estava, se você estiver desconectado. Deseja que o navegador continue de onde parou ou não?
Deji 23/05

21

Eu apenas tive esse problema. Percebi que, mesmo depois de fechar meu navegador, havia muitos processos do Chrome em execução. Acontece que estes eram todos da minha extensão do Chrome.

Em configurações avançadas, desmarquei 'Continue running background apps when Google Chrome is closed' e meus cookies de sessão começaram a funcionar como deveriam.

Ainda é um problema para todos nós desenvolvedores que estamos codificando esperando que os cookies da sessão sejam limpos quando o usuário terminar de navegar.


Normalmente, os "aplicativos em segundo plano" não têm nada a ver com a persistência dos cookies da sessão (a menos que você tenha uma extensão que esteja lembrando os cookies da sessão ?!). A opção "Continuar de onde parei" nas configurações também restaura os cookies da sessão (conforme mencionado em outra resposta).
precisa saber é o seguinte

1
Está funcionando, depois de desativar essa opção, meus cookies de sessão são limpos!
Walid Ammar

Este é realmente outro motivo que faz com que os cookies da sessão não sejam excluídos. Obrigado.
L-Four

10

Talvez porque o Chrome ainda esteja sendo executado em segundo plano depois que você fechar o navegador. Tente desativar esse recurso, fazendo o seguinte:

  1. Chrome aberto: // configurações /
  2. Clique em "Mostrar configurações avançadas ..."
  3. Navegue até a seção Sistema e desative "Continuar executando aplicativos em segundo plano quando o Google Chrome estiver fechado". Isso forçará o Chrome a fechar completamente e, em seguida, excluirá os cookies da sessão.

No entanto, acho que o Chrome deve verificar e excluir os cookies da sessão anterior, iniciando em vez de fechar.


10

Eu tive que ambos, desmarcado, nas configurações avançadas do Chrome:

  • 'Continue executando aplicativos em segundo plano quando o Google Chrome estiver fechado'
  • "Continue de onde parei", "Na inicialização"

Isso deve ser votado mais alto ou a resposta principal deve ser editada para incluir o ponto "executando aplicativos em segundo plano". Isso me afetou. Desativar "Continuar de onde parei" não foi corrigido. Também tive que desativar "Continuar executando aplicativos em segundo plano quando o Google Chrome estiver fechado". Em seguida, meus cookies de sessão estavam sendo excluídos corretamente quando fechei o Chrome.
27619 Matt Welke

Eu acho que essa é realmente a melhor resposta.
L-Four

3

Uma alternativa simples é usar o novo objeto sessionStorage . Pelos comentários, se você tiver marcado 'continuar de onde parei', o sessionStorage persistirá entre as reinicializações.


9
Não, ele persiste entre as reinicializações, se você tiver marcado "Continuar de onde parei".
Olli

TimDog: "sessionStorage persistirá entre as reinicializações.", @Olli "Não, persiste entre as reinicializações". Gente, você concorda ou discute? Eu não entendo :) Ah, espere, entendi ...
naXa 23/10/18

2

Eu tive o mesmo problema com o "document.cookie" no Windows 8.1, a única maneira de o Chrome excluir o cookie era desligá-lo do gerenciador de tarefas (não de uma maneira realmente sofisticada), então decidi gerenciar os cookies pelo back-end ou usar algo como "js-cookie".


1

Você tentou remover a extensão de hangouts no Google Chrome? porque força o cromo a continuar funcionando, mesmo que você feche todas as janelas.

Eu também estava enfrentando o problema, mas ele resolveu agora.


1

Vamos para chrome://settings/content/cookies?search=cookies

Ativar Clear cookies and site data when you quit Chrome.

Trabalhou para mim


-2

Se você definir o domínio para o cookie de sessão php, os navegadores parecerão segurá-lo por 30 segundos ou mais. Não parece importar se você fechar a guia ou a janela do navegador.

Portanto, se você estiver gerenciando sessões usando algo como o seguinte, pode estar causando a interrupção do cookie no navegador por mais tempo do que o esperado.

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

A única maneira que encontrei de me livrar do cookie suspenso é remover a linha de código que define o domínio do cookie da sessão. Também atente para a função session_set_cookie_params (). O prefixo de ponto do domínio também não parece ter relação com o problema.

Isso pode ser um bug do php, pois o php envia um cookie de sessão (ou seja PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) no cabeçalho após a destruição da sessão. Ou pode ser um problema de propagação do servidor, mas acho que não, já que meu teste foi em servidores privados.


-2

Acabei de ter o problema de o Chrome armazenar uma ID de sessão, mas não gosto da idéia de desativar a opção para continuar de onde parei. Olhei para os cookies do site e encontrei um cookie de ID da sessão para a página de login. A exclusão que não corrigiu meu problema. Pesquisei o domínio e descobri que havia outro cookie de ID de sessão no domínio. A exclusão dos dois cookies de ID da sessão corrigiu manualmente o problema e eu não fechei e reabri o navegador que poderia ter restaurado os cookies.



-8

O Google chrome tem um problema se você definir e desmarcar a forma incorreta de cookie. Este é o código php. Pensei que isso lhe dará uma idéia.

Definir cookie

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

Caminho errado e não funcionará (observe que PATH está ausente)

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

A maneira correta corrige o problema no google chrome

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

1
A questão não é sobre um cookie inadequado.
John
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.