Браузер: Cookie потерян на обновлении

Я испытываю странное поведение своего приложения в браузере Chrome (Никакая проблема с другими браузерами). Когда я обновляю страницу, cookie отправляется правильно, но периодически браузер, кажется, не передает cookie некоторым обновлениям.

Это - то, как я установил свой cookie:

$identifier = / some weird string /;
$key = md5(uniqid(rand(), true));
$timeout = number_format(time(), 0, '.', '') + 43200;
setcookie('fboxauth', $identifier . ":" . $key, $timeout, "/", "fbox.mysite.com", 0);

Это - то, что я использую для верхних колонтитулов страницы:

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Thu, 25 Nov 1982 08:24:00 GMT"); // Date in the past

Вы видите какую-либо проблему здесь, которая могла бы влиять на обработку cookie? Спасибо за любое предложение.

РЕДАКТИРОВАНИЕ 01:

Кажется, что cookie не отправляется с некоторыми запросами. Это происходит периодически, и я вижу это поведение для ВСЕХ браузеров теперь. Кто-либо столкнулся с такой ситуацией? Есть ли какая-либо ситуация, куда cookie не будет отправлен с запросом?

РЕДАКТИРОВАНИЕ 02:

Вот HTTP-заголовки:

Request Method:GET
Status Code:200 OK

ЗАГОЛОВКИ ЗАПРОСА

Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Referer:http://fbox.mysite.com/dashboard
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/532.5 (KHTML, like Gecko)
Chrome/4.1.249.1045 Safari/532.5

ЗАГОЛОВКИ ОТВЕТА

Cache-Control:no-cache, must-revalidate
Content-Length:8903
Content-Type:text/html
Date:Tue, 06 Apr 2010 09:25:26 GMT
Expires:Thu, 25 Nov 1982 08:24:00 GMT
Last-Modified:Tue, 06 Apr 2010 09:25:26 GMT
Pragma:no-cache
Server:Microsoft-IIS/7.5
X-Powered-By:PHP/5.3.1 ZendServer

Еще раз спасибо, для любой инструкции.

10
задан Thomas Bonini 6 April 2010 в 17:40
поделиться

5 ответов

Единственное, о чем я могу думать, увидев информацию из вашего заголовка, - это то, что PHP выводит что-то до того, как вы установите cookie. В этом случае setcookie должен вернуть false, и вы получите предупреждение «Не удается отправить файл cookie сеанса - заголовки уже отправлены», - сказал Барт С.предлагает, включите error_reporting (E_ALL) и попробуйте вывести возвращаемое значение setcookie, чтобы убедиться, что это не так.

Также попробуйте просто использовать setcookie в базовом случае только с именем и значением и снова проверьте заголовки ответов. Затем вырежьте весь свой код, кроме setcookie, и, если это сработает, верните весь свой код с помощью метода «разделяй и властвуй» :)

3
ответ дан 4 December 2019 в 01:30
поделиться

Ваше приложение обслуживается по протоколу http или file: //?

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

- enable-file-cookies

1
ответ дан 4 December 2019 в 01:30
поделиться

Один вопрос, одно предложение -

Вопрос - почему вы делаете number_format (...) на time (), поскольку time () + 43200 должно быть достаточно.

Предложение - Вы смотрели на часы между клиентом и сервером? Поскольку вы даете разницу между двумя машинами только на 12 часов, если есть большой разброс часов или разногласия по поводу времени по Гринвичу между двумя машинами, вы можете обнаружить, что отправляете cookie, срок действия которого истекает в самое ближайшее время. ближайшее будущее.

4
ответ дан 4 December 2019 в 01:30
поделиться

То, как вы обрабатываете файлы cookie, совершенно нормально, в вашем коде все в порядке, проблема, похоже, связана с Chrome.

Хотя Проблема Chrome № 3014 связана в основном с Java-апплетом, похоже, именно это вы и испытываете.

1
ответ дан 4 December 2019 в 01:30
поделиться

Я видел подобную проблему раньше. Я бы перепроверил, правильный ли путь.

Я бы предположил, что www.domain.com отличается от domain.com , как и www.domain.com/ (с завершающим вперед -slash)

Кроме того, убедитесь, что PHP имеет доступ для записи сеансов в файл с соответствующими разрешениями на запись (это другой каталог в зависимости от дистрибутива, но phpinfo () должен сообщить вам, какой это каталог. пытаюсь использовать.)

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

1
ответ дан 4 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

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