Почему IE/Fiddler видит разные настройки/удаление файлов cookie из заголовков Chrome и FF/Live HTTP?

StackOverflow https://stackoverflow.com/questions/1071365

Вопрос

У меня есть частично унаследованное веб-приложение на PHP, и после того, как я поковырялся с Fiddler, у меня появилось немного больше данных, чем раньше.Проблема, которую я пытаюсь решить, - это нежелательные выходы из системы в IE6/8, но не в FF/Chrome.Если пользователь переходит между разными страницами, файлы cookie данных для входа исчезают.

Поведение отличается в FF vs.IE, и сообщаемая информация различается почти одинаково между Fiddler(/IE) и Live HTTP Headers(/FF).

В Firefox файлы cookie обрабатываются так, как указано в PHP:они создаются, когда пользователь входит в систему и проверяет «Запомнить меня», и удаляются только в том случае, если пользователь посещает страницу выхода, и у них есть двухнедельный срок действия.Заголовки Live HTTP не сообщают ничего другого:файлы cookie никогда не сообщаются как измененные или удаленные, когда пользователь переходит между страницами.

Но в IE они исчезают, когда пользователь переходит между разными страницами, и Fiddler сообщает:

Cookies / Login
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com
    Set-Cookie: *******=deleted; expires=Sun, 29-Jun-2008 21:07:46 GMT; path=; domain=.********.com

(«удалено» буквально цитируется из вывода Fiddler.В моем коде нет места, где бы какое-либо значение было установлено в волшебную строку «удалено».)

Мало того, что IE и Firefox по-разному интерпретируют то, что говорит сайт, но Fiddler и HTTP Live Headers сообщают соответственно разные версии того, что делает сайт.

Есть ли что-то особенное в IE и «удалении»?Это может показаться странным, но хочет ли IE повторного включения файлов cookie при каждом просмотре страницы или что-то в этом роде?

И как я могу убедить IE благословить рассматриваемые файлы cookie, чтобы они не были удалены сервером, если только пользователь не запросит это, посетив URL-адрес выхода из системы?

Это было полезно?

Решение

В итоге я нашел следующее:Firefox и IE вели себя по-разному, потому что они по-разному обрабатывали кэширование, когда отсутствующий документ истекал в течение 14 дней:заголовки, которые были установлены.

Firefox, по-видимому, один раз проверял отсутствие данных, а затем больше не запрашивал их.

IE, с другой стороны, продолжал проверять элемент, для которого таблица стилей указала неверный путь, получал 404 страницы, а пользовательская страница 404 отправляла шаблонное приглашение войти в систему, что приводило к выходу пользователя из системы (возможно, это не лучший шаблонный шаблон). ).Я предполагаю, что таблица стилей была кэширована, но IE продолжал запрашивать отсутствующие элементы.

Итак, это были различия в кэшировании плюс косвенное включение плюс поведение страницы 404.

Я до сих пор не знаю, откуда взялось «удалено».(Поставляет ли PHP слово «удалено», если вы устанавливаете для строки cookie пустое значение?)

Другие советы

IE не установит файл cookie, если на хосте есть подчеркивание, но здесь проблема не в этом.

Fiddler ничего не «изобретает» — если он говорит, что получил HTTP-заголовок, устанавливающий для файла cookie значение «удалено», это означает, что сервер буквально отправил это.

Возможно, вы захотите посмотреть, есть ли у вас по сети какие-либо ошибочные запросы, которые заставляют сервер удалять файлы cookie.Например, в другой теме кто-то заметил, что тег IMG с источником «» (пустая строка) заставит IE отправить запрос на корень сайта, а их домашняя страница удалит файлы cookie для входа в систему при посещении.

IE6/7/8 в настоящее время имеет ограничение в 50 файлов cookie на хост, но это не то, что вы здесь делаете.

Есть ли в URL-адресе рассматриваемой страницы подчеркивание?Я помню, что у IE были проблемы с файлами cookie с доменных имен, которые не соответствуют спецификации доменного имени (RFC 1035 проверьте раздел 2.3.1).

Также существуют (где?) некоторые ограничения в IE относительно размера файлов cookie и количества файлов cookie на домен.Я считаю, что в IE6 ограничением был максимальный размер всех файлов cookie на домен — 4095 байт и 20 файлов cookie на домен.

Проблема также может возникнуть, если вы используете перенаправление на основе заголовка, при котором IE может потерять куки-файл.

Кстати.дата, которую вы указали в двух директивах Set-Cookie, взята ли она из старого журнала, или сервер действительно установил файл cookie с датой истечения срока действия в прошлом (это обычный способ сказать...«эй, браузер, удали этот файл cookie, так как срок его действия уже истек несколько дней назад»)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top