Данные сеанса, потерянные только в Chrome
У меня проблема аналогичная, если не идентична проблеме в этом потоке:
Случайное проигрывание переменных сеанса только в Google Chrome и перезаписи URL
Но все решения в этом потоке не работают для меня. Я получаю странное поведение только от Google Chrome в моем PHP/MySQL приложении. Если я пытаюсь использовать Firefox, он работает, но Chrome не делает.
Я перемещаюсь в какое-то место в своей корзине покупок и в нескольких местах в коде храню данные сеанса. Не беспокойтесь обо мне, начиная сессию или что-то связанное с этим, у меня есть 11 лет в webapp dev, все сделано хорошо.
Во всех браузерах я могу var_dump($_SESSION)
и вернуть свои данные, но в Chrome он не хранит данные. Также обратите внимание, что сеанс действительно передается, я могу посмотреть в сетевом мониторе, и я вижу, что печенье отправлено и многое другое связано с работой сеанса, но этот $_SESSION['last_viewed_element']
не сохраняется. Я также не могу показать ничего другого, все потеряно.
EDIT:
Проблема решена путем переключения с СЕССИЙ НА ПЕЧАТИ...
Ответы
Ответ 1
В конце концов, ответа нет, проблема все еще существует, я просто переключился на использование файлов cookie вместо этого, если кто-нибудь когда-нибудь получит эту проблему с помощью chrome + wordpress в то же время, не теряйте больше времени, переключитесь на файлы cookie...
Ответ 2
У меня была очень похожая проблема, в моем случае проблема была вызвана 404 из-за отсутствия favicon.ico в Chrome. 404.php назвал нижний колонтитул, который изменил переменные Session.
Я надеюсь, что это поможет кому-то.
Ответ 3
Проблема может заключаться в том, что ваш сервер ищет значки, если он не найден, сервер выдает перенаправление 302, которое убивает переменные сеанса.
Ответ 4
У меня была эта проблема, и я смог ее исправить. Chrome продолжает искать файл .ico, и по какой-то причине он влияет на него. Как только я поместил файл .ico в корневой каталог сайта, все начало работать. Сумасшедшая, но правда.
Ответ 5
У меня была такая же проблема, но на IIS с ASP.Net MVC. IE и Firefox все в порядке, но в Chrome я терял данные сеанса. В конце концов выяснилось, что ошибка 404 очищала файл cookie в Chrome. Ниже приведены шаги, которые я выполнил, чтобы найти проблему и решить ее. Я предлагаю другим попробовать:
-
В Chrome используйте Инструменты → Инструменты разработчика. Обновите страницу, чтобы "Инструменты разработчика" начали показывать данные.
-
В инструментах разработчика, проверьте ресурсы → Cookies. Сразу после успешного входа в систему у меня было 2 файла cookie для домена, который я тестировал. При переходе на страницу, где я потерял сессию, один из файлов cookie больше не отображался. Снимок был снят после исправления, показывая оба файла cookie:
![enter image description here]()
-
Теперь откройте вкладку "Сеть". Посмотрите внимательно на любой ресурс (html/image/css/js/...), который имеет любую ошибку. У меня была ошибка 404 для файла шрифта. Ошибка 404 была вызвана отсутствием типа mime в IIS.
исправление ошибки 404 устраняет проблему в Chrome. Снимок экрана, снова принятый после исправления, имел все ресурсы с статусом ОК: ![enter image description here]()
Бонус был, исследуя эту проблему, помог мне узнать отсутствующий тип mime в IIS, который затрагивал больше страниц во всех браузерах.
Ответ 6
Была такая же проблема и, наконец, решена. Вход установил сессию с domain.com, но в перенаправлении это было www.domain.com. IE и FF, похоже, считают, что www и ни один из них не являются такими же, но Chrome этого не делает. Найдено путем проверки Host в сетевом журнале для каждой загрузки страницы.
Ответ 7
Просто попробуйте это, прежде чем тратить свое время
Если вы уже вошли в свое веб-пространство (панель управления /Cpanel/ панель Plesk) в том же браузере. Затем выйдите из этой панели управления и очистите cookie и попробуйте снова
В случае
данные сеанса, потерянные только в хром
В моем случае я просто reset браузер Chrome
Перейдите в chrome://settings/затем нажмите advanced, затем reset
![введите описание изображения здесь]()
Ответ 8
Код, с которым я работал, имел ту же проблему. Решено, удалив следующее:
session_id($_GET['sid']);
session_write_close();
Ответ 9
Я решил проблему, удалив строку:
base href="http://mysite/"
из тега head
в HTML-коде.
Ответ 10
Рассматривая следующую ссылку:
http://code.google.com/p/chromium/issues/detail?id=45582
Я считаю, что проблема связана с тем, что PHP получает запрос, который не соответствует файлу, а затем неправильно обрабатывает 404. Я должен был сказать Nginx, чтобы он соответствовал любому URL-адресу с favicon.ico, а затем возвратил 404.
Вот моя строка для Nginx:
if ($request_uri ~ 'favicon') {
return 404;
}
Ответ 11
В вашем файле php ini попробуйте установить
session.save_path = /path/to/your/tmp
На некоторых серверах иногда сеансу требуется явно прямой файл сеанса для сохранения в локальном каталоге или в противном случае происходит какая-то странность.
Ответ 12
ХА! Я наконец решил это!
При выполнении перенаправления header()
в PHP вы должны сделать die()
сразу после него. THAT разрешает его только для всех браузеров, кроме Chrome.
Для Chrome вы также должны сделать session_write_close()
прямо перед header()
Успех Sweeeeeeeeet
Ответ 13
Это мгновенно решило мою проблему: перейдите в chrome://settings/cookies
, затем найдите локальный хост и удалите его файлы cookie. Решение настолько просто, что стоит попробовать
Ответ 14
У нас была такая же проблема вчера весь день.
Что (по-видимому) разрешило это (для нас) было обновление chrome.
У нас была версия 45.0.2454.93 и с момента обновления до версии 45.0.2454.99 проблема не возникала снова...
Ответ 15
У меня была аналогичная проблема, я обнаружил причину, которая была очень странной.
В моем случае один URL-адрес изображения внутри класса css был неправильным!! Браузер не загрузил изображение и потому, что страница была формой регистрации с полем пароля, браузером reset сеансом по соображениям безопасности.
Ответ 16
Я не уверен, что ваш случай похож на мой. Но для меня причиной было формирование URL.
С хром, набрав URL-адрес как " http://www.domainname.com" и установив там переменные сеанса.
и перенаправлением с помощью http://domainname.com" без WWW. sessionid не используется повторно.
Это решило мою проблему, надеюсь, это поможет
Ответ 17
Вероятно, вы теряете сеансы только в своей среде разработки, и это может быть, скорее всего, из-за "той же политики происхождения" Chrome. Если это так, то это ваше решение Отключить такую же политику происхождения в Chrome
Ответ 18
Я нашел, что моя версия вопроса была в точности как описано здесь и здесь, и поэтому я хочу добавьте еще один квалификатор к вышеперечисленному, который
Google Chrome (v.59, stable) Инспектор не говорит вам, что favicon.ico недоступен и не сообщает, что страница перенаправлена на 302.
Ответ 19
Я нашел "решение" (это не проблема, а только эффекты!!)...
если на вашей странице используется ajax, ajax is asyncronus...
Если я вызываю функцию, которая работает на SESSION, чем я вызываю другую страницу, которая работает на сеансе, несколько раз первый вызов не заканчивается перед вторым запуском и эффектом первого перезаписываемого ответа второго.
Я разрешаю проблему с async: false в каждом вызове ajax.
Ext.Ajax.request({
url: '/io/resetsession.php',
**async: false**
});
Ext.Ajax.request({
url: '/io/loaddata.php',
**async: false**,
.....
});