ChromeはセッションCookieを削除しません


188

私はこのようにJavaScriptでセッションCookieを設定しようとしています:

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

ただし、ブラウザを終了して再起動しても、Chromeでは削除されません。

私はFirefoxとOperaをチェックインしましたが、どちらも意図したとおりに機能します。ブラウザーの終了時にセッションCookieが削除されます。

Chromeは有効期限ルールを無視しているだけですか?

複数のOSをチェックインしたところ、Windows XPとUbuntuのChromeではセッションCookieが削除されますが、Mac OSX Lionでは削除されないことがわかりました。


1
それは私の投稿とまったく同じでした。つまり、有効期限なしで、Httponlyについては不明です。手で削除するつもりはありません。問題は、ブラウザが終了時にそれを削除するべきであるということですが、Chromeはそれを削除しません。
MGS

>>>そして、セッションCookieがWindows XPのChromeで削除されることがわかりました。いいえ。WindowsXPでは、ChromeはCookieも削除しません。私は現在Windows XPを使用していますが、同じ問題が発生したため、質問を見つけました。唯一の違いは、ZF2を使用し、Sessionパッケージを介してセッションオプションを設定することです。しかし、それはとにかく、通常のPHPの方法である- ini_set("session.cookie_lifetime", 0)'remember_me_seconds' => 1。しかし、助けにはなりません。Firefoxは正常に動作しますが、Chromeは動作しません。
グリーン(

回答:


222

3
そして、改行でコメントをうまくフォーマットしようとしましたが、愚かなシステムはそれらの改行も削除しました...さあ、Stackoverflow、より良いシステムを作ってください!私は、読者にさらに役立つようにコメントを読みやすくすることに時間を費やしています。そして、あなたはまず私がスパマーであると愚かに信じ、それから改行を取り除くことによってそれを台無しにします!
Jesper

2
注:オプションの[Firefoxの起動時]プルダウンで[前回のウィンドウとタブを表示する]を選択している場合、Firefoxでもまったく同じ問題が発生する可能性があります。同じ理由で。設計上、ブラウザーがクラッシュした場合にワークフローを維持できるように、セッションCookieは保持されます。
webnesto 2012

40
うん。このため、ChromeとFFはどちらもセッションCookie機能を破壊します。Chromeの場合、問題が報告されています:code.google.com/p/chromium/issues/detail?id=128513WONTFIXとマークされています。したがって、明らかに、GoogleはChromeのウェブ標準とセキュリティホールに従うことについてaf ***を提供しておらず、FFについてもしていません。FFバグを参照してください(少なくともクローズされていません):bugzilla.mozilla.org/show_bug.cgi ? id=443354これらの2つのブラウザーにとって悲しい状態です。
lucian303 2012年

4
w3.org/Protocols/rfc2109/rfc2109:Max-Ageデフォルトの動作では、ユーザーエージェントの終了時にCookieが破棄されます。
lucian303 2012年

2
@ lucian303、これは標準に違反しているように見えますが、「セッションCookieを有効に保つ」ことなく「前回からブラウジングを続行」することはできないと思います。たとえば、Opera、rekonq、およびIE9(新しいタブページの[最後のセッションを再開]リンクを使用)は、前者を後者なしで実装します。その結果、そのようなブラウザーは、まだログインしている、またはCSRF保護トークンを停止したことを誤って示すキャッシュページを表示する可能性があります。
sayap

25

「ブラウジングセッションの終了」で期限切れになるように設定されたCookieで同じ問題が発生しました。

残念ながらそれはできなかったので、ブラウザの設定で少し遊んだ。

ブラウザを閉じたときに開いているタブを記憶する機能が問題の根本であることが判明しました。(この機能の名前は「起動時」-「中断したところから続行」です。少なくとも現在のバージョンのChromeでは)。

これはOperaとFirefoxでも発生します。


これで問題はすぐに解決しました!なぜ物事が彼らのように起こるのかを知ってうれしい:)
高速反射2013年

5
受け入れられない。多くのタブを開いたままChromeを誤って終了してしまうことがよくあるので、開いているウィンドウをChromeに忘れさせたくありません。(OS Xにフォーカスがないウィンドウをスクロールさせてくれて、フォーカスがあると思うようになったことに感謝します。しかし、別の話です)。再度ログインする必要がある場合は、ログインしてください。意図的に終了したときにログアウトしないと、まだどこにもログインしていないことを確認するのが難しくなります。これは、大きなセキュリティ問題になる可能性があります。
Michael

5
少なくとも、このオプションはデフォルトでは有効になっていません。この「機能」はGoogleヘルプにも記載されています:「Chromeは閲覧データとセッションCookieも復元します」IMOこれは、[中断したところから続行]の下の追加のサブオプションになるはずです。
MrWhite

ちなみに、これはOperaの「問題」ではなくなったようです(Opera 22でテスト済みですが、少なくとも1つまたは2つのバージョンの問題であることに気付いていません)。Firefox 29は、対応する「前回のウィンドウとタブを表示」がチェックされている場合(ドキュメントのとおり)、セッションCookieを復元します。
MrWhite

2
@Michaelセッションを使用するほとんどのWebサイトでは、ログアウトしていると、表示していたページに戻ることができないため、あまり意味がありません。それで、中断したところから続けてブラウザを続行しますか?
デジは、

21

この問題が発生しました。ブラウザを閉じた後でも、多くのChromeプロセスが実行されていることに気付きました。これらはそれぞれ私のChrome拡張機能からのものであることがわかりました。

詳細設定でチェックを外す'Continue running background apps when Google Chrome is closed'と、セッションCookieが正常に機能し始めました。

それでも、ユーザーがブラウジングを完了するとセッションCookieがクリアされることを期待してコーディングを行ってきたすべての開発者にとって、後部の苦痛です。


通常、「バックグラウンドアプリ」は、セッションCookieの永続性とは何の関係もありません(セッションCookieを記憶している拡張機能がある場合を除きます!)。設定の[中断したところから続行する]オプションでも、セッションCookieが復元されます(別の回答で説明されています)。
MrWhite

1
そのオプションを無効にすると、セッションCookieがクリアされます。
Walid Ammar 14

これは確かに、セッションCookieが削除されないもう1つの理由です。ありがとう。
L-Four

10

これは、ブラウザを閉じた後もChromeがバックグラウンドで実行されているためと考えられます。次の操作を行って、この機能を無効にしてください。

  1. chrome:// settings /を開きます
  2. 「詳細設定を表示...」をクリックします
  3. [システム]セクションに移動し、[Google Chromeが閉じているときにバックグラウンドアプリの実行を続行する]を無効にします。これにより、Chromeが強制的に完全に閉じられ、セッションCookieが削除されます。

ただし、Chromeは以前のセッションCookieを閉じるのではなく、開始時にチェックして削除する必要があると思います。


10

チェックを外して、Chromeの詳細設定で両方を実行する必要がありました。

  • 「Google Chromeが閉じているときにバックグラウンドアプリの実行を続行する」
  • 「中断したところから続ける」、「起動時」

これは高い方の投票になるか、「バックグラウンドアプリの実行」ポイントを含むようにトップアンサーを編集する必要があります。これは私に影響を与えました。「中断したところから続行」をオフにしても修正されませんでした。「Google Chromeが閉じているときにバックグラウンドアプリの実行を続行する」もオフにする必要がありました。次に、Chromeを閉じたときにセッションCookieが適切に削除されていました。
Matt Welke

これは確かに最良の答えだと思います。
L-Four

3

簡単な代替方法は、新しいsessionStorageオブジェクトを使用することです。コメントに従って、「私が中断したところから続行する」がチェックされている場合、sessionStorageは再起動の間も持続します。


9
いいえ、「私が中断したところから続行する」がチェックされている場合、再起動の間も持続します。
Olli 2014

TimDog: "sessionStorageは再起動間で持続します。"、@Olli "いいえ、再起動間で持続します。" 皆さん、同意しますか、それとも議論しますか?わからない:)ああ、待って、わかった...
naXa

2

私はWindows 8.1の「document.cookie」で同じ問題を抱えていました。ChromeがCookieを削除する唯一の方法は、タスクマネージャーからCookieを削除することだったので(本当に凝った方法ではありません)、バックエンドからCookieを管理するか、何かを使用することにしました「js-cookie」のように。


1

Google Chromeでハングアウト拡張機能を削除しようとしましたか?すべてのウィンドウを閉じてもchromeが実行され続けるためです。

私も問題に直面していましたが、今では解決しました。


1

に行く chrome://settings/content/cookies?search=cookies

を有効にしClear cookies and site data when you quit Chromeます。

私のために働いた


-2

PHPセッションCookieのドメインを設定した場合、ブラウザは30秒間ドメインを保持しているように見えます。タブやブラウザウィンドウを閉じても問題はないようです。

したがって、次のようなものを使用してセッションを管理している場合は、Cookieがブラウザで予想以上にハングすることがあります。

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

ハングしているCookieを取り除く唯一の方法は、セッションCookieのドメインを設定するコード行を削除することです。また、session_set_cookie_params()関数にも注意してください。ドメインの先頭にドットを付けることも、問題には関係がないようです。

PHPSESSID=b855ed53d007a42a1d0d798d958e42c9セッションが破棄された後、php がヘッダーでセッションcookie(つまり)を送信するため、これはphpのバグである可能性があります。または、サーバーの伝播の問題である可能性がありますが、テストはプライベートサーバーで行われたため、そうは思いません。


-2

ChromeでセッションIDを保存するというこの問題が発生しましたが、中断したところから続行するオプションを無効にするのは好きではありません。WebサイトのCookieを確認したところ、ログインページのセッションID Cookieが見つかりました。それを削除しても問題は解決しませんでした。ドメインを検索したところ、ドメインに別のセッションID Cookieがあったことがわかりました。両方のセッションID Cookieを手動で削除すると問題が解決し、Cookieを復元する可能性のあるブラウザーを閉じてから再度開くことはしませんでした。



-8

不適切な方法でCookieを設定および設定解除すると、Google Chromeに問題が発生します。これはphpコードです。これはあなたにアイデアを与えると思いました。

クッキーを設定する

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

間違った方法で機能しません(PATHがないことに注意してください)

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

Google Chromeの問題を修正する正しい方法

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

1
問題は不適切なCookieに関するものではありません。
John K
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.