IE отправляет несколько файлов cookie с одним и тем же именем? - PullRequest
5 голосов
/ 14 апреля 2010

У меня странная ошибка, которая возникает в IE7 / XP и IE8 / Vista на моем сайте. IE отправляет два куки с именем PHPSESSID.

Как воспроизвести:

  1. Очистить куки в IE (не обязательно, если вы никогда не посещали unisender.com).

  2. Посетите unisender.com (точно без www для воспроизведения!), И он будет перенаправлен на www.unisender.com

  3. Войдите под любым действительным именем пользователя и паролем (я зарегистрировал имя пользователя testmsdn с паролем testmsdn - не стесняйтесь использовать для тестирования)

  4. Запустите вашу любимую программу захвата трафика (я предпочитаю wireshark)

  5. Теперь нажмите любую ссылку в меню (например, «сообщения»)

  6. Посмотрите на захваченный трафик - вы увидите, что IE отправляет двойной файл cookie PHPSESSID (и из-за этого вы вышли из системы). Похоже, что первый PHPSESSID от unisender.com, а второй от www.unisender.com.

Захваченный образец:


GET / en / letter_list HTTP / 1.1

Принять: image / gif, image / jpeg, image / pjpeg, application / x-ms-application, application / vnd.ms-xpsdocument, application / xaml + xml, application / x-ms-xbap, application / x -шоковая вспышка, /

Рефери: http://www.unisender.com/en/intro

Accept-Language: ru

User-Agent: Mozilla / 4.0 (совместимый; MSIE 8.0; Windows NT 6.0; Trident / 4.0; Mozilla / 4.0 (совместимый; MSIE 6.0; Windows NT 5.1; SV1); SLCC1; .NET CLR 2.0.50727;. NET CLR 3.5.21022; .NET CLR 3.5.30729; FDM; .NET CLR 3.0.30729)

Accept-Encoding: gzip, deflate

Хост: www.unisender.com

Подключение: Keep-Alive

Cookie: authchallenge = 3a9cfcfc9fe33822e3e21d75c8a3d3e4; PHPSESSID = 14ea1cb133632951592397c86eaf037e; us_reg_ref = неизвестно; us_reg_url = HTTP% 3A% 2F% 2F% 2Funisender.com; __utma = 1.778517853.1271204400.1271204400.1271204400.1; __utmb = 1.3.10.1271204400; __utmc = 1; __utmz = 1.1271204400.1.1.utmcsr = (прямой) | utmccn = (прямой) | utmcmd = (нет); PHPSESSID = 65e110aeb995a66b9dc8da5656c7a3da; last_login_name = testmsdn


Я пытался использовать сессионные и несессионные куки, пытался использовать .unisender.com вместо unisender.com для куки - ничего не помогает.

Полагаю, не должно быть файлов cookie с таким же именем.

Я прав? Это ошибка в IE? Если это ошибка, то есть ли обходной путь?

Или я не прав, и это ожидаемое поведение?

1 Ответ

3 голосов
/ 14 апреля 2010

Это дизайн.

Вы не должны отправлять cookie-файлы для версии вашего сайта без веб-сайта, либо в обеих версиях вашего сайта должен быть установлен атрибут «domain = example.com» в cookie-файле сессии PHP.

В противном случае эти файлы cookie на самом деле не совпадают, и, следовательно, вам будет отправлено два. http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx

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