Chrome не видаляє файли cookie сеансу


188

Я намагаюся встановити файли cookie сеансу в javascript таким чином:

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

Але Chrome не видаляє його, навіть якщо я вийшов із браузера та запустив його знову.

Я зареєструвався в Firefox та Opera і обидва працюють за призначенням - вони видаляють cookie сеансу під час виходу з браузера.

Чи Chrome просто ігнорує правила закінчення терміну дії?

Я перевірив декілька ОС і виявив, що cookie сеансу видаляється на Chrome у Windows XP та Ubuntu, а НЕ в Mac OSX Lion.


1
Це було точно так само, як у моїй посаді, тобто без закінчення терміну, не впевнений у Httponly. Я не намагаюся видалити його вручну. Проблема полягає в тому, що браузери повинні видалити її під час виходу, але Chrome просто не робить цього.
mgs

>>> і дізналися, що cookie сеансу видаляється з Chrome у Windows XP. Ні. У Windows XP Chrome також не видаляє файли cookie. Я зараз використовую Windows XP і знайшов ваше запитання, тому що у мене така ж проблема. Єдина відмінність полягає в тому, що я використовую ZF2 і встановлюю параметри сеансу через пакет Session. Але це все-таки звичайний php спосіб - ini_set("session.cookie_lifetime", 0)і 'remember_me_seconds' => 1. Але це не допомагає. Firefox працює чудово, але Chrome ні.
Зелений

Відповіді:


222

3
І я спробував добре відформатувати свій коментар за допомогою рядків, але дурна система також усунула ці розриви рядків ... Давай, Stackoverflow, зроби кращу систему! Я витрачаю час на те, щоб зробити мої коментарі читабельними, щоб бути корисними для читачів, а потім ви спотворюєте його спочатку, нерозумно вважаючи, що я спамер, а потім, видаляючи перерви у рядках!
Джеспер

2
Примітка. Ви можете зіткнутися з точно такою ж проблемою в Firefox, якщо у виборі параметрів "Коли Firefox запускається" виберіть параметр "Показати мої вікна та вкладки минулого разу". З тієї ж причини. За задумом зберігаються файли cookie сеансу, щоб допомогти зберегти робочий процес у разі збою браузера.
webnesto

40
Так. Через це Chrome і FF порушують функцію cookie сеансу. Щодо хромування, про проблему повідомлено: code.google.com/p/chromium/isissue/detail?id=128513 та позначено WONTFIX. Тож очевидно, що Google не повідомляє af *** щодо дотримання веб-стандартів та отворів безпеки в Chrome, а також FF. Дивіться помилку FF (принаймні не закрито): bugzilla.mozilla.org/show_bug.cgi?id=443354 Який сумний стан для цих двох браузерів.
lucian303

4
w3.org/Protocols/rfc2109/rfc2109 : Max-AgeПоведінка за замовчуванням - це відмовитись від файлу cookie при виході агента користувача.
lucian303

2
@ lucian303, хоча це виглядає як порушення стандартів, я не думаю, що ви можете "продовжувати перегляд з минулого разу", не "зберігаючи файли cookie сеансу в живих". Opera, rekonq та IE9 (наприклад, через посилання "Відкрити останній сеанс" на сторінці "Нова вкладка"), наприклад, реалізувати перший без останнього. Як результат, такі веб-переглядачі можуть показувати вам кешовані сторінки, які неправильно вказують на те, що ви все-таки увійшли в систему та / або помітили маркер захисту CSRF.
сказати

25

У мене була та сама проблема з файлом cookie, термін дії якого закінчився на "Перегляд сеансу перегляду".

На жаль, це не так, я трохи пограв з налаштуваннями браузера.

Виявилось, що функція, яка запам'ятовує відкриті вкладки, коли браузер закривається, була корінь проблеми. (Ця функція має назву "При запуску" - "Продовжити там, де я зупинилася". Принаймні, у поточній версії Chrome).

Це також відбувається з Opera і Firefox.


Це вирішило це питання відразу для мене! Приємно знати, чому все відбувається так, як вони роблять :)
швидкі рефлекси

5
Неприпустимо. Я не хочу, щоб Chrome забував, які вікна були відкриті, тому що я занадто часто випадково кидаю Chrome, відкриваючи багато вкладок. (Спасибі OS X за те, що дозволив мені прокручувати вікно, яке не має фокусу, що змушує мене думати, що НЕ має фокус. Але, інша історія). Якщо мені доведеться знову увійти, так і нехай буде. Якщо не виходити з системи, коли я навмисне виходжу, це ускладнює переконання, що я ще ніде не входжу в систему, що може бути великою проблемою безпеки.
Майкл

5
Принаймні ця опція за замовчуванням не включена. Ця функція також згадується в довідці Google : "Chrome також відновить ваші дані веб-перегляду та файли cookie сеансу. " IMO, це має бути додатковою опцією в розділі "Продовжити там, де я зупинився".
MrWhite

Між іншим, це, здається, вже не є "проблемою" з Opera (перевірена Opera 22, хоча я не помічав, що це проблема, принаймні, версія або дві). Firefox 29 відновлює файли cookie сеансу, коли відповідне "Показати вікна та вкладки минулого разу" (відповідно до документації).
MrWhite

2
@Michael Що не має особливого сенсу, оскільки більшість веб-сайтів, що використовують сеанси, не дозволять вам повернутися на сторінку, на якій ви були, якщо ви вийшли з системи. То ви хочете, щоб браузер продовжував там, де ви зупинилися чи ні?
Deji

21

У мене просто було це питання. Я помітив, що навіть після закриття браузера у мене запущено багато процесів Chrome. Виявляється, це було кожне з мого розширення Chrome.

У розширених налаштуваннях я не зняв відповідь 'Continue running background apps when Google Chrome is closed'і мої сеансові файли cookie почали працювати як слід.

Тим не менше, болі в тилу для всіх нас розробників, які кодували очікуючи, що файли cookie сеансу очистяться, коли користувач перегляне веб-сайт.


Зазвичай "фонові програми" не мають нічого спільного з збереженням файлів cookie сеансу (якщо, можливо, у вас є розширення, яке запам'ятовує ваші сесійні файли cookie ?!). Параметр "Продовжити там, де я зупинився" у налаштуваннях також відновлює файли cookie сеансу (як зазначено в іншій відповіді).
MrWhite

1
Це працює, після того як я відключив цю опцію, я очищаю свої сесійні файли cookie!
Валід Аммар

Це дійсно ще одна причина, через яку файли cookie сеансу не видаляються. Дякую.
L-Four

10

Це можливо тому, що Chrome все ще працює у фоновому режимі після закриття браузера. Спробуйте відключити цю функцію, виконавши вказані нижче дії.

  1. Відкрити хром: // налаштування /
  2. Натисніть "Показати розширені налаштування ..."
  3. Перейдіть до розділу "Система" та відключіть "Продовжити запуск фонових програм, коли Google Chrome закритий". Це змусить Chrome закритись повністю, а потім видалить файли cookie сеансу.

Однак я думаю, що Chrome повинен перевіряти та видаляти файли cookie попереднього сеансу, починаючи замість того, щоб закривати.


10

Мені довелося обидва, без галочки, розширюватись у розширених налаштуваннях Chrome:

  • "Продовжуйте запускати фонові програми, коли Google Chrome закритий"
  • "Продовжуйте, де я зупинився", "При запуску"

Це повинно бути проголосовано вище, або головна відповідь має бути відредагована, щоб включити пункт "запущені фонові програми". Це вплинуло на мене. Якщо вимкнути "Продовжити там, де я зупинився", це не виправлено. Мені довелося також вимкнути "Продовжити запуск фонових програм, коли Google Chrome закритий". Потім мої сеансові файли cookie видалялися належним чином, коли я закривав Chrome.
Метт

Я думаю, що це справді найкраща відповідь.
L-Four

3

Проста альтернатива - використання нового об’єкта sessionStorage . Згідно з коментарями, якщо ви встановили прапорець "продовжити там, де я зупинився", sessionStorage зберігатиметься між перезавантаженнями.


9
Ні, вона зберігається між перезавантаженнями, якщо ви встановили прапорець "Продовжити там, де я зупинився".
Оллі

TimDog: "sessionStorage зберігатиметься між перезавантаженнями.", @Olli "Ні, він зберігається між перезавантаженнями". Хлопці, ви згодні чи сперечаєтесь? Я не розумію :) А, чекай, я
зрозумію

2

У мене була така ж проблема з "document.cookie" в Windows 8.1, єдиний спосіб, коли Chrome видаляє файл cookie, це закриття його з диспетчера завдань (не дуже фантазійний спосіб), тому я вирішив керувати файлами cookie з бекенда або використовувати щось як "js-cookie".


1

Ви намагалися видалити розширення Hangouts у Google Chrome? тому що це змушує хром продовжувати працювати, навіть якщо ви закриєте всі вікна.

Я також стикався з проблемою, але вона вирішилася зараз.


1

Йти до chrome://settings/content/cookies?search=cookies

Увімкнути Clear cookies and site data when you quit Chrome.

Працювали для мене


-2

Якщо ви встановите домен для файлу cookie сеансу php, браузери, здається, тримаються на ньому протягом 30 секунд. Це не має значення, якщо ви закриєте вкладку чи вікно браузера.

Тож якщо ви керуєте сеансами, використовуючи щось подібне, це може спричинити зависання файлу cookie у браузері довше, ніж очікувалося.

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

Єдиний спосіб, який я знайшов позбутися від висячого файлу cookie, - це видалити рядок коду, який встановлює домен cookie сеансу. Також слідкуйте за функцією session_set_cookie_params (). Точка префіксації домену, здається, також не має жодного стосунку до проблеми.

Це може бути помилка php, оскільки php надсилає cookie сеансу (тобто PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) у заголовок після знищення сеансу. Або це може бути проблема розповсюдження сервера, але я не вважаю так, оскільки мій тест був на приватних серверах.


-2

У мене щойно була проблема Chrome із збереженням ідентифікатора сесії, але мені не подобається ідея відключити можливість продовжувати там, де я зупинився. Я переглянув файли cookie для веб-сайту та знайшов файл cookie Session ID для сторінки входу. Видалення це не виправило мою проблему. Я шукав домен і виявив, що в домені було ще одне печиво Ідентифікатора сесії. Видалення обох куків Session ID вручну виправлена проблема , і я не закрити і знову відкрити браузер , який міг би відновлене печиво.



-8

Google Chrome має проблему, якщо встановити та вимкнути файл cookie неналежним чином. Це PHP-код. Думаючи, що це дасть вам ідею.

Встановити cookie

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

Неправильно і не буде працювати (повідомлення PATH відсутнє)

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

Правильний спосіб виправлення проблеми на Google Chrome

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

1
Питання не в неправильному файлі cookie.
Джон К
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.