크롬은 세션 쿠키를 삭제하지 않습니다


188

다음과 같이 자바 스크립트에서 세션 쿠키를 설정하려고합니다.

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

그러나 브라우저를 종료하고 다시 시작하더라도 Chrome은 삭제하지 않습니다.

Firefox와 Opera에서 체크인했으며 둘 다 의도 한대로 작동합니다. 브라우저 종료시 세션 쿠키를 삭제합니다.

Chrome이 만료 규칙을 무시하고 있습니까?

여러 OS를 확인한 결과 Windows XP 및 Ubuntu에서는 Chrome에서 세션 쿠키가 제거되었지만 Mac OSX Lion에서는 제거되지 않습니다.


1
그것은 내 게시물에서와 같이 즉 만료가 없었으며 Httponly에 대해서는 확실하지 않았습니다. 손으로 삭제하려고하지 않습니다. 문제는 브라우저가 종료시 브라우저를 삭제해야하지만 Chrome 은이를 수행하지 않습니다.
mgs

>>> Windows XP의 Chrome에서 세션 쿠키가 제거되었음을 알았습니다. 아니요. Windows XP에서 Chrome은 쿠키도 삭제하지 않습니다. 나는 지금 Windows XP를 사용하고 동일한 문제가 있기 때문에 귀하의 질문을 찾았습니다. 유일한 차이점은 ZF2를 사용하고 세션 패키지를 통해 세션 옵션을 설정한다는 것입니다. 그러나 보통의 PHP 방법은 어쨌든 - ini_set("session.cookie_lifetime", 0)'remember_me_seconds' => 1. 그러나 도움이되지 않습니다. Firefox는 잘 작동하지만 Chrome은 작동하지 않습니다.
Green

답변:


222

3
그리고 줄 바꿈으로 주석을 멋지게 꾸미려고했지만 어리석은 시스템은 줄 바꿈도 제거했습니다 ... Stackoverflow, 더 나은 시스템을 만드십시오! 나는 내 의견을 읽을 수있게하고 독자들에게 도움을주기 위해 시간을 소비하고있다. 그런 다음 나는 어리석게도 스패머라고 믿고 줄 바꿈을 제거함으로써 그것을 망치게된다!
Jesper

2
참고 : 옵션의 "Firefox가 시작될 때"풀다운에 대해 "마지막에서 내 창과 탭 표시"를 선택한 경우 Firefox에서 동일한 문제가 발생할 수 있습니다. 같은 이유로. 설계 상으로 브라우저 쿠키가 발생할 경우 워크 플로우를 유지하기 위해 세션 쿠키가 유지됩니다.
webnesto

40
예. 이로 인해 Chrome과 FF는 모두 세션 쿠키 기능을 중단합니다. 크롬의 경우 code.google.com/p/chromium/issues/detail?id=128513 이며 WONTFIX로 표시된 문제가보고되었습니다 . 따라서 Google은 Chrome의 웹 표준 및 보안 허점 준수에 대해 별다른 언급을하지 않으며 FF도 마찬가지입니다. FF 버그 (적어도 닫히지 않았 음)를 참조하십시오. bugzilla.mozilla.org/show_bug.cgi?id=443354 이 두 브라우저의 상태는 어떻습니까.
lucian303

4
w3.org/Protocols/rfc2109/rfc2109 : Max-Age 기본 동작은 사용자 에이전트가 종료 될 때 쿠키를 삭제하는 것입니다.
lucian303

2
@ lucian303, 이것은 표준 위반으로 보이지만 "세션 쿠키를 유지하지 않고"마지막으로 탐색을 계속할 수는 없다고 생각합니다. 예를 들어 Opera, rekonq 및 IE9 (새 탭 페이지의 "마지막 세션 다시 열기"링크를 통해)는 후자를 사용하지 않고 전자를 구현합니다. 결과적으로, 이러한 브라우저는 여전히 로그인되어 있거나 CSRF 보호 토큰이 멈 췄음을 잘못 표시하는 캐시 된 페이지를 표시 할 수 있습니다.
sayap

25

방금 "브라우징 세션 끝"에서 만료되도록 설정된 쿠키와 동일한 문제가 발생했습니다.

불행히도 브라우저의 설정으로 조금 연주하지 않았습니다.

브라우저를 닫을 때 열린 탭을 기억하는 기능이 문제의 원인이라는 것이 밝혀졌습니다. 이 기능의 이름은 "시작시"- "중지 된 곳에서 계속"입니다. 적어도 현재 Chrome 버전에서는.

이것은 Opera와 Firefox에서도 발생합니다.


이것은 나를 위해 즉시 문제를 해결했습니다! 왜 일이 그들이 일어나는 방식으로 발생하는지 알아서 반가워요 :)
fast-refflexes

5
용납 할 수 없습니다. 크롬이 열려있는 창을 잊어 버리는 것을 원하지 않습니다. 왜냐하면 너무 많은 탭이 열린 채 실수로 Chrome을 종료하기 때문입니다. (포커스가없는 창을 스크롤하여 포커스가 있다고 생각하게하는 OS X에게 감사합니다. 그러나 다른 이야기). 다시 로그인해야한다면 로그인하십시오. 고의로 종료했을 때 저를 로그 아웃하지 않으면 어느 곳에도 로그인하지 못하도록하는 것이 어렵습니다. 이는 큰 보안 문제 일 수 있습니다.
Michael

5
최소한이 옵션은 기본적으로 활성화되어 있지 않습니다. 이 "기능"은 Google 도움말 에도 언급되어 있습니다 . "Chrome은 인터넷 사용 기록 및 세션 쿠키 도 복원합니다 . " IMO 이것은 "계속 중단"아래의 추가 하위 옵션이어야합니다.
MrWhite

우연히 이것은 더 이상 Opera의 "문제"인 것처럼 보이지 않습니다 (Opera 22에서 테스트되었지만 적어도 한두 가지 버전의 문제는 알지 못합니다). Firefox 29는 문서에 따라 해당 "마지막 시간에서 내 창과 탭 표시"를 선택하면 세션 쿠키를 복원합니다.
MrWhite

2
@Michael 세션을 사용하는 대부분의 웹 사이트에서 로그 아웃 한 경우 이전 페이지로 돌아갈 수 없으므로 의미가 없습니다. 브라우저를 중단 한 곳에서 계속하길 원하십니까?
Deji

21

방금이 문제가있었습니다. 브라우저를 닫은 후에도 많은 Chrome 프로세스가 실행되고 있음을 알았습니다. 이들은 각각 Chrome 확장 프로그램에서 나온 것으로 나타났습니다.

고급 설정에서 선택을 해제 'Continue running background apps when Google Chrome is closed'하고 세션 쿠키가 정상적으로 작동하기 시작했습니다.

사용자가 브라우징을 마쳤을 때 세션 쿠키가 지워질 것으로 예상하는 코딩을하고있는 모든 개발자에게 여전히 고통 스럽습니다.


일반적으로 "백그라운드 앱"은 세션 쿠키 지속성과 관련이 없습니다 (세션 쿠키를 기억하는 확장명을 가지고 있지 않습니까?!). 설정의 "계속 중단"옵션은 세션 쿠키를 복원합니다 (다른 답변에서 언급 한 바와 같이).
MrWhite

1
해당 옵션을 비활성화하면 세션 쿠키가 지워집니다!
Walid Ammar

이것은 실제로 세션 쿠키가 삭제되지 않는 또 다른 이유입니다. 감사.
L-4

10

브라우저를 닫은 후에도 Chrome이 백그라운드에서 계속 실행 중일 수 있습니다. 다음을 수행하여이 기능을 비활성화하십시오.

  1. chrome : // settings /를 엽니 다.
  2. "고급 설정 표시 ..."를 클릭하십시오.
  3. 시스템 섹션으로 이동하여 "Chrome을 닫을 때 백그라운드 앱 계속 실행"을 비활성화하십시오. 이렇게하면 Chrome이 완전히 닫히고 세션 쿠키가 삭제됩니다.

그러나 Chrome은 닫는 대신 시작시 이전 세션 쿠키를 확인하고 삭제해야한다고 생각합니다.


10

Chrome의 고급 설정에서 모두 선택 해제해야했습니다.

  • 'Chrome을 닫을 때 백그라운드 앱 계속 실행'
  • "중지 된 위치에서 계속", "시작시"

이것은 더 높은 표를 얻거나 "백그라운드 앱 실행"포인트를 포함하도록 최상위 답변을 편집해야합니다. 이것은 나에게 영향을 미쳤다. "계속 중단"을 해제해도 문제가 해결되지 않았습니다. 또한 "Chrome을 닫을 때 백그라운드 앱 계속 실행"을 해제해야했습니다. 그런 다음 Chrome을 닫을 때 세션 쿠키가 올바르게 삭제되었습니다.
매트 웰케

나는 이것이 실제로 가장 좋은 대답이라고 생각합니다.
L-Four

3

간단한 대안은 새로운 sessionStorage 객체 를 사용하는 것입니다. 의견에 따라 '내가 계속 한 곳에서 계속하십시오'를 선택하면 sessionStorage가 다시 시작될 때까지 지속됩니다.


9
아니요, "계속 중단"을 선택한 경우 다시 시작하는 동안 지속됩니다.
Olli

TimDog : "sessionStorage는 재시작 사이에 지속됩니다.", @Olli "아니요, 재시작 사이에 지속됩니다". 여러분 동의 하시거나 논쟁하십니까? 이해가 안 돼요 :) 아, 잠깐만 요.
naXa

2

Windows 8.1에서 "document.cookie"와 동일한 문제가 발생했습니다. Chrome에서 쿠키를 삭제하는 유일한 방법은 쿠키를 작업 관리자에서 종료하는 것입니다 (정말 멋진 방법은 아님). 백엔드에서 쿠키를 관리하거나 무언가를 사용하기로 결정했습니다. "js-cookie"와 같은


1

Chrome에서 행 아웃 확장 프로그램을 제거하려고 했습니까? 모든 창을 닫아도 크롬이 계속 실행되도록하기 때문입니다.

나는 또한 문제에 직면했지만 지금 해결되었습니다.


1

이동 chrome://settings/content/cookies?search=cookies

사용 Clear cookies and site data when you quit Chrome.

나를 위해 일했다


-2

PHP 세션 쿠키에 도메인을 설정하면 브라우저가 30 초 정도 도메인을 유지하는 것으로 보입니다. 탭이나 브라우저 창을 닫아도 문제가되지 않습니다.

따라서 다음과 같은 것을 사용하여 세션을 관리하는 경우 쿠키가 브라우저에서 예상보다 오래 중단 될 수 있습니다.

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

교수형 쿠키를 제거하는 유일한 방법은 세션 쿠키의 도메인을 설정하는 코드 줄을 제거하는 것입니다. session_set_cookie_params () 함수도주의하십시오. 도메인 접두사로도 문제와 관련이없는 것 같습니다.

PHP PHPSESSID=b855ed53d007a42a1d0d798d958e42c9가 세션이 파괴 된 후 헤더에 세션 쿠키 (예 :)를 보내면 PHP 버그 일 수 있습니다 . 또는 서버 전파 문제 일 수도 있지만 테스트가 개인 서버에서 수행 된 이후로는 그렇게 생각하지 않습니다.


-2

방금 Chrome에서 세션 ID를 저장하는 데 문제가 있었지만 중단 한 부분을 계속하기 위해 옵션을 비활성화하는 아이디어가 마음에 들지 않습니다. 웹 사이트의 쿠키를보고 로그인 페이지의 세션 ID 쿠키를 찾았습니다. 삭제해도 문제가 해결되지 않았습니다. 도메인을 검색하여 도메인에 다른 세션 ID 쿠키가 있음을 발견했습니다. 세션 ID 쿠키를 모두 삭제 하면 문제가 수동으로 해결되었으며 쿠키를 복원 할 수있는 브라우저를 닫았다가 다시 열지 않았습니다.



-8

쿠키를 부적절하게 설정 및 설정 해제하면 Google 크롬에 문제가 있습니다. 이것은 PHP 코드입니다. 이것이 당신에게 아이디어를 줄 것이라고 생각했습니다.

쿠키 설정

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

잘못된 방법으로 작동하지 않습니다 (PATH 알림이 누락 됨)

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

Google 크롬에서 올바른 방법으로 문제가 해결됩니다.

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

1
문제는 부적절한 쿠키에 관한 것이 아닙니다.
John K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.