Chrome не удаляет сессионные куки


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 тоже не удаляет куки. Я использую сейчас Windows XP и нашел ваш вопрос, потому что у меня такая же проблема. Разница лишь в том, что я использую ZF2 и устанавливаю параметры сеанса через пакет сеанса. Но это все равно обычный путь php - ini_set("session.cookie_lifetime", 0)и 'remember_me_seconds' => 1. Но не помогает Firefox работает нормально, а Chrome - нет.
Зеленый

Ответы:


222

3
И я попытался красиво отформатировать свой комментарий с помощью разрывов строк, но глупая система также удалила эти разрывы строк ... Давай, Stackoverflow, сделай систему лучше! Я трачу время на то, чтобы сделать мои комментарии читабельными, чтобы они были особенно полезны для читателей, а потом вы все разрушаете, глупо полагая, что я спамер, а затем удаляя разрывы строк!
Джеспер

2
Примечание: вы можете столкнуться с точно такой же проблемой в Firefox, если у вас есть опция «Показать мои окна и вкладки с прошлого раза» для опции «Когда запускается Firefox» в опциях. По той же причине. По своему дизайну сессионные куки сохраняются, чтобы помочь сохранить рабочий процесс в случае сбоя браузера.
'11

40
Ага. Из-за этого Chrome и FF нарушают функциональность файлов cookie сеанса. Что касается Chrome, сообщается о проблеме : 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, хотя это выглядит как нарушение стандартов, я не думаю, что вы можете «продолжить просмотр с прошлого раза» без «сохранения сессионного cookie». Opera, rekonq и IE9 (через ссылку «Открыть последний сеанс» на странице «Новая вкладка»), например, реализуют первое без последнего. В результате такие браузеры могут отображать кэшированные страницы, которые неверно указывают на то, что вы все еще вошли в систему и / или устарели токен защиты CSRF.
Саяп

25

У меня была та же проблема с файлом cookie, срок действия которого истек в конце сеанса просмотра.

К сожалению, этого не произошло, поэтому я немного поиграл с настройками браузера.

Оказалось, что корнем проблемы была функция, которая запоминает открытые вкладки при закрытии браузера. (Функция называется «При запуске» - «Продолжить с того места, где я остановился». По крайней мере, в текущей версии Chrome).

Это также происходит с Opera и Firefox.


Это решило проблему сразу для меня! Приятно знать, почему все происходит так, как они делают :)
быстрые рефлексы

5
Неприемлемый. Я не хочу, чтобы Chrome забывал, какие окна были открыты, потому что я слишком часто случайно выходил из Chrome с множеством открытых вкладок. (Спасибо OS X за предоставленную мне возможность прокручивать окно, у которого нет фокуса, что заставляет меня думать, что оно имеет фокус. Но другая история). Если мне придется снова войти в систему, пусть будет так. Из-за того, что я не вышел из системы, когда я ухожу намеренно, сложно удостовериться, что я еще ни разу не вошел в систему, что может быть ОГРОМНОЙ проблемой безопасности
Майкл

5
По крайней мере, эта опция не включена по умолчанию. Эта «функция» также упоминается в справке Google : «Chrome также восстановит ваши данные о просмотре и файлы cookie сеанса ». ИМО это должен быть дополнительный подопция в разделе «Продолжить с того места, где я остановился».
MrWhite

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

2
@Michael Что не имеет особого смысла, так как большинство веб-сайтов, использующих сеансы, не позволят вам вернуться на страницу, на которой вы были, если вы вышли из системы. Итак, вы хотите, чтобы браузер продолжал с того места, где вы остановились, или нет?
Дежи

21

У меня только что была эта проблема. Я заметил, что даже после закрытия браузера у меня было запущено много процессов Chrome. Оказывается, это были все из моего расширения Chrome.

В расширенных настройках я снял флажок, 'Continue running background apps when Google Chrome is closed'и мои сеансовые куки-файлы начали работать как надо.

Тем не менее боль в тылу для всех нас, разработчиков, которые кодировали, ожидая, что куки сессии будут очищены, когда пользователь закончит просмотр.


Обычно «фоновые приложения» не имеют ничего общего с сохранением файлов cookie сеанса (разве что у вас есть расширение, которое запоминает ваши файлы cookie сеанса ?!). Опция «Продолжить с того места, где я остановился» в настройках также восстанавливает сеансовые куки (как упоминалось в другом ответе).
MrWhite

1
Это работает, после того как я отключил эту опцию, мои сеансовые куки очищаются!
Валид Аммар

Это действительно еще одна причина, по которой сеансовые куки не удаляются. Спасибо.
L-Four

10

Возможно, это связано с тем, что Chrome все еще работает в фоновом режиме после закрытия браузера. Попробуйте отключить эту функцию, выполнив следующие действия:

  1. Открыть Chrome: // Настройки /
  2. Нажмите «Показать дополнительные настройки ...»
  3. Перейдите вниз к разделу «Система» и отключите «Продолжать запуск фоновых приложений, когда Google Chrome закрыт». Это заставит Chrome полностью закрыться, а затем удалит сессионные куки.

Тем не менее, я думаю, что Chrome должен проверять и удалять файлы cookie предыдущих сессий, начиная с закрытия, а не с закрытия.


10

Пришлось обоим, непроверенным, в расширенных настройках Chrome:

  • «Продолжать запуск фоновых приложений, когда Google Chrome закрыт»
  • «Продолжить с того места, где я остановился», «При запуске»

За это следует проголосовать выше, или верхний ответ должен быть отредактирован, чтобы включить пункт «Запуск фоновых приложений». Это повлияло на меня. Отключение «Продолжить с того места, где я остановился» не помогло. Мне также пришлось отключить «Продолжать запуск фоновых приложений, когда Google Chrome закрыт». Затем мои сессионные куки-файлы были удалены должным образом, когда я закрыл 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? потому что он заставляет Chrome продолжать работать, даже если вы закроете все окна.

Я тоже столкнулся с проблемой, но теперь она решена.


1

Перейти к chrome://settings/content/cookies?search=cookies

Включить Clear cookies and site data when you quit Chrome.

Работал для меня


-2

Если вы установите домен для куки-файла 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 идентификатора сессии для страницы входа. Удаление, которое не исправило мою проблему. Я ищу домен и обнаружил, что в домене есть еще один файл cookie с идентификатором сессии. Удаление обоих файлов cookie идентификатора сеанса вручную устранило проблему, и я не закрыл и не открыл браузер, который мог восстановить файлы cookie.



-8

Google Chrome имеет проблему, если вы неправильно установили и удалили cookie. Это PHP-код. Мысль это даст вам идею.

Установить печенье

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

Неправильный путь и не будет работать (обратите внимание, что PATH отсутствует)

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

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

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

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