Вопрос по session, cookies, google-chrome, javascript – Chrome не удаляет сессионные куки

167

Я пытаюсь установить сессионный cookie в JavaScript следующим образом:

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

Но Chrome не удаляет его, даже если я закрываю браузер и снова запускаю его.

Я проверил в Firefox и Opera, и оба работают как задумано - они удаляют cookie сессии при выходе из браузера.

Chrome просто игнорирует правила истечения срока действия?

Я проверил несколько ОС и обнаружил, что cookie-файлы сессии удаляются в Chrome в Windows XP и Ubuntu, но НЕ в Mac OSX Lion.

Это было точно так же, как в моем посте, то есть без истечения срока действия, не уверен насчет Httponly. Я не пытаюсь удалить его вручную. Проблема заключается в том, что браузеры должны удалить его при выходе, но Chrome просто не делает этого. mgs
& GT; & GT; & GT; и обнаружил, что сессия cookie удаляется в Chrome в Windows XP. Нет. В Windows XP Chrome также не удаляет cookie. Я сейчас использую Windows XP и нашел ваш вопрос, потому что у меня такая же проблема. Разница лишь в том, что я использую ZF2 и устанавливаю параметры сеанса через пакет сеанса. Но это все равно обычный путь php -ini_set("session.cookie_lifetime", 0) а также'remember_me_seconds' => 1, Но это не помогает. Firefox работает нормально, но Chrome - нет. Green

Ваш Ответ

12   ответов
-8

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

Set cookie

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

Wrong way and will not work (notice PATH is missing)

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

Correct way fixes issue on google chrome

setcookie('userLoggedIn', 0, time()-3600, PATH);
Вопрос не в неправильном печенье.
1

заставляет Chrome продолжать работать, даже если вы закроете все окна.

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

19

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

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

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

Это работает, после того как я отключил эту опцию, мои сеансовые куки были очищены!
Обычно «фоновые приложения» не имеет никакого отношения к сохранению файлов cookie сеанса (если, возможно, у вас нет расширения, которое запоминает ваши файлы cookie сеанса ?!). & Quot; Продолжить с того места, где я остановился & quot; опция в настройках также восстанавливает сеансовые куки (как уже упоминалось в другом ответе).
D, я не работаю (28.0.1500.72 м в Windows x32)
25

срок действия которого истекает в конце сеанса просмотра.

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

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

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

Это решило проблему сразу для меня! Приятно знать, почему все происходит так, как они делают :)
@Michael, который не имеет особого смысла, поскольку большинство веб-сайтов, использующих сеансы, не позволяют вернуться на страницу, на которой вы были, если вы вышли из системы. Так вы хотите, чтобы браузер продолжал с того места, на котором остановился, или нет?
Между прочим, это не кажется «проблемой». с Opera больше (протестировал Opera 22, хотя я не заметил, что это проблема по крайней мере для версии или двух). Firefox 29 восстанавливает сеансовые куки-файлы, когда соответствующие & quot; Показать мои окна и вкладки с прошлого раза & quot; проверено (согласно документации).
Неприемлемый. Я не хочу, чтобы Chrome забывал, какие окна были открыты, потому что я слишком часто случайно выходил из Chrome с большим количеством открытых вкладок. (Спасибо OS X за предоставленную мне возможность прокручивать окно, на котором нет фокуса, что наводит меня на мысль, что оно имеет Фокус. Но другая история). Если мне придется снова войти в систему, пусть будет так. Из-за того, что я не вышел из системы, когда я увольняюсь намеренно, трудно удостовериться, что я еще ни разу не вошел в систему, что может быть ОГРОМНОЙ проблемой безопасности.
По крайней мере, эта опция не включена по умолчанию. Эта & quot; функция & quot; также упоминается вGoogle Help: & quot; Chrome также восстановит ваши данные о просмотре иsession cookies.& Quot ;. IMO, это должен быть дополнительный подопция в разделе «Продолжить, где я остановился».
0

sessionStorageК вашему сведению:https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage

0

но мне не нравится идея отключить опцию продолжения с того места, где я остановился. Я просмотрел файлы cookie для веб-сайта и нашел файл cookie идентификатора сеанса для страницы входа. Удаление, которое не исправило мою проблему. Я ищу домен и обнаружил, что в домене был еще один файл cookie с идентификатором сеанса. Удалениеboth Файлы cookie идентификатора сеанса вручную устранили проблему, и я не закрыл и не открыл браузер, который мог восстановить файлы cookie.

0

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

Поэтому, если вы управляете сеансами, используя что-то вроде следующего, это может привести к зависанию cookie в браузере дольше, чем ожидалось.

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

Единственный способ, которым я обнаружил, чтобы избавиться от зависшего cookie, - это удалить строку кода, которая устанавливает домен сеансового cookie. Также следите за функцией session_set_cookie_params (). Точка префикса домена, похоже, не имеет никакого отношения к этой проблеме.

Это может быть ошибка php, так как php отправляет сессионный cookie (т.е.PHPSESSID=b855ed53d007a42a1d0d798d958e42c9) в заголовке после уничтожения сеанса. Или это может быть проблема распространения сервера, но я так не думаю, так как мой тест проводился на частных серверах.

9

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

Open chrome://settings/ Click "Show advanced settings ..." Navigate down to System section and disable "Continue running background apps when Google Chrome is closed". This will force Chrome to close completely and then it will delete session cookies.

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

5

'Continue running background apps when Google Chrome is closed' "Continue where I left off", "On startup"
У меня это сработало :)
191
w3.org/Protocols/rfc2109/rfc2109: Max-AgeСтандартное поведение - удалить куки при выходе из пользовательского агента.
И я попытался красиво отформатировать свой комментарий с помощью разрывов строк, но глупая система также удалила эти разрывы строк ... Давай, Stackoverflow, сделай систему лучше! Я трачу время на то, чтобы сделать мои комментарии читабельными, чтобы быть очень полезными для читателей, а потом вы все разрушаете, глупо полагая, что я спамер, а затем удаляя разрывы строк!
Примечание: вы можете столкнуться с точно такой же проблемой в Firefox, если у вас есть & quot; Показать мои окна и вкладки с прошлого раза & quot; выбор для «Когда запускается Firefox» раскрытие в опциях. По той же причине. По своему дизайну сессионные куки-файлы сохраняются, чтобы помочь сохранить рабочий процесс в случае сбоя браузера.
@ lucian303, хотя это выглядит как нарушение стандартов, я не думаю, что вы можете «продолжить просмотр с прошлого раза». без "сохранения файла cookie сеанса". Opera, rekonq и IE9 (через ссылку «Открыть последний сеанс» на странице «Новая вкладка»), например, реализуют первое без последнего. В результате такие браузеры могут показывать вам кэшированные страницы, которые неверно указывают, что вы все еще вошли в систему и / или устарели токен защиты CSRF.
Ага. Из-за этого Chrome и FF нарушают функциональность файлов cookie сеанса. Для хрома проблема была сообщена:code.google.com/p/chromium/issues/detail?id=128513 и помечены WONTFIX. Очевидно, что Google не дает никаких рекомендаций по поводу соблюдения веб-стандартов и брешей в безопасности в Chrome, а также FF. Смотрите ошибку FF (по крайней мере, не закрыт):bugzilla.mozilla.org/show_bug.cgi?id=443354 Какое печальное состояние для этих двух браузеров.
2

document.cookie & quot; в Windows 8.1 единственным способом, которым Chrome удалял куки-файлы, было закрытие его из диспетчера задач (не очень интересный способ), поэтому я решил управлять куки-файлами из внутреннего интерфейса или использовать что-то вроде & quot; js-cookie & quot ;.

3

sessionStorage объект. Согласно комментариям, если у вас есть «продолжить, где я остановился» проверено, sessionStorage будет сохраняться между перезапусками.

TimDog: "sessionStorage будет сохраняться между перезапусками.", @Olli "Нет, он сохраняется между перезапусками". Ребята, вы согласны или спорите? Я не понимаю :) Ах, подожди, я понял ...
спасибо, я отредактировал свой ответ, чтобы отразить это обновление
Нет, он сохраняется между перезапусками, если у вас есть «Продолжить с того места, где я остановился». проверено.

Похожие вопросы