Zend Framework - Internet Explorer - проблема с файлами cookie phpsessid
Я создал интенсивную сессию приложения веб-сайта Zend Framework.
Он отлично работает в Chrome и Firefox, но не работает в IE. Сессия сбрасывает каждую страницу в IE.
Просматривая заголовки, я обнаружил, что браузер IE получает разные cookie-файлы phpsessid при каждом получении или публикации в одном и том же браузере, поэтому сеанс не работает. В FF и Chrome файл cookie phpsessid сохраняется нормально.
Кто-нибудь знает, почему это может происходить только в IE?
У меня есть этот код в bootstrap.php:
$generalSession = new Zend_Session_Namespace('MyNameHere');
$generalSession ->setExpirationSeconds(1000 * 60);
Я восстанавливаю сессию, используя:
Zend_Auth::getInstance()->getStorage()->read();
Моя конфигурация IE для конфиденциальности и безопасности установлена на минимум, используя IE9.
Я попытался поместить p3p cookie в заголовки, но это не имело никакого значения.
Что мне не хватает?
2 ответа
Я наконец решил проблему с IE.
Дело в том, что наш сервер dev был dev_landing.mysite.com, и IE отклоняет заголовки сайтов с именами "_"... это сделано в IE.
Я нашел полное объяснение здесь: http://odedpeer.blogspot.com.es/2009/08/why-are-my-http-cookies-rejected-by-ie.html
Продолжать делать!!
Все, что вам нужно, чтобы убедиться, что сессия начинается в ZF1:
//in bootstrap.php
protected function _initsession()
{
Zend_Session::start();
}
Это инициализирует сессию, как в обычном PHP.
Если вы не меняете его где- либо еще, Zend_Auth использует Zend_Session_Namespace ('Zend_Auth'); поэтому любое созданное вами пространство имен не будет доступно Zend_Auth.
Когда вы создаете экземпляр Zend_Session_Namespace(), сеанс запускается, если он еще не был запущен.
Я должен задаться вопросом, каждый раз, когда ваш boostrap.php (каждый запрос) запускает Zend_Session_Namespace(), если вы не получаете новый идентификатор сессии в проводнике. Возможно, попробуйте просто вызвать start в начальной загрузке и просто создайте экземпляры пространств имен, когда это необходимо. Также возможно, что некоторый код / информация, отсутствующая в вашем вопросе, влияет на сессию.
Здесь много гаданий, так что удачи.