Что делать, если в IE7 есть два куки с одинаковым именем? - PullRequest
4 голосов
/ 06 августа 2009

Некоторый фон:

CakePHP записывает свой собственный файл cookie идентификатора сеанса, кроме PHPSESSID. Это используется для аутентификации запроса. Затем SWFupload отправляет файл и этот токен для аутентификации и выбирается в качестве нового пользовательского агента - поэтому в cakephp вы должны отключить функцию безопасности «check-user-agent».

Во многих браузерах этого достаточно. Версия IE7 и версия SWF, похоже, не имеют корреляции с этой ошибкой. В нашем случае IE7 хранил / отправлял две версии одного и того же куки. Итак, первый вопрос: почему? Как?

Дальнейшее объяснение:

Поскольку эти дублированные файлы cookie хранятся в начале и конце строки заголовка, PHP / Cake получает один конец, если это обман, поэтому он «выбирает» один, а другой файл cookie, который я установил и отправил в swfobject, - другой печенье. Я могу придумать несколько хаков, чтобы это исправить - но на самом деле я хотел бы знать, как это условие могло возникнуть в первую очередь.

CakePHP также, по-видимому, не генерирует уникальные идентификаторы CakeSession при выходе из системы и входе в систему, что может быть причиной, и решение может быть в том, чтобы заставить торт использовать PHPSESSID везде, или это может быть просто для того, чтобы swfupload отправлял правильный SESSID ...

Редактировать один: Заголовки для файлов cookie, отправляемых CakePHP:

Set-Cookie: CAKEPHP=gqlpa88blmhmdsmv9e99ga16b3; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/
Set-Cookie: CAKEPHP=deleted; expires=Wed, 06-Aug-2008 13:21:01 GMT; path=/
Set-Cookie: CAKEPHP=ob5695trnspprlohiunrpqgkm0; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/

Любые идеи приветствуются!

Ответы [ 2 ]

7 голосов
/ 07 августа 2009

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

Например, если вы установили «ID» файла cookie на «www.example.com», а также на «example.com», то для каждого запроса на «www.example.com» будут отправляться два идентификатора cookie или "anything.www.example.com".

Чтобы предотвратить это, убедитесь, что вы постоянно устанавливаете файлы cookie для одного и того же домена, и если у вас есть несколько доменных имен, привязанных к одному и тому же серверу (например, www.example.com и example.com), то перенаправьте их к другому.

Аналогично, не устанавливайте файлы cookie с тем же именем с другим значением пути.

4 голосов
/ 06 августа 2009

Насколько я помню, если вы устанавливаете cookie, который уже существует, он просто перезаписывает значение и дату истечения срока действия старого cookie ... это для домена. означает, что вы можете иметь 2 куки с одинаковым именем в / и в / что угодно, и они не перезаписывают друг друга.

имя куки на сайте уникально. по крайней мере в стандарте. не знаю, следует ли IE7 этому.

или это не то, что вы спрашиваете?

привет

...