У меня проблемы с приложением CakePHP.Кажется, это происходит только в IE и только на некоторых компьютерах.Это верно для компьютеров, на которых это происходит.
Проблема первая: Пользователь вошел в систему и на странице https://example.com/users/view и щелкает кнопку выхода.Пользователь перенаправляется на http://example.com и, по-видимому, выходит из системы до тех пор, пока пользователь не заходит на другую страницу https, и они все еще входят в систему. Они могут нажимать кнопку выхода столько раз, сколько захотят, но всегда входят в систему через https ивыйти из системы только по http.
Проблема вторая: Пользователь входит в систему по адресу https://example.com/users/signin, они перенаправлены на http://example.com и теперь отображаются для входа.Пользователь заходит на https://example.com/admin/slides и еще не знает его, но теперь вышел из системы, щелкнув любую другую страницу (или просто обновив свою текущую страницу), попросит его снова войти в систему.
У меня естьпонятия не имею, что происходит.Я прочитал и опробовал решения, описанные для обеих этих схожих проблем: Сессия не сохраняется при переходе с ssl на non-ssl и Cookie не обновляется / перезаписывается в IE , но у меня все еще естьте же проблемы.
Единственная подсказка, которую я заметил до сих пор (и я не знаю, означает ли это что-либо), это когда я отлаживаю и $_SESSION
, и $this->Session->read()
на HTTP-страницах ВСЕГДА только $ this-> Session-> read () возвращает значение.на страницах HTTPS некоторые ВСЕГДА возвращают одно и то же значение для обоих, другие ВСЕГДА возвращают только значение для $ this-> Session-> read ().
Например, http://example.com и https://example.com/users никогда не видит $ _SESSION, https://example.com/carts всегда видит $ _SESSION.Я не уверен, но я думаю, что, возможно, защищенные страницы должны видеть это, и, поскольку некоторые не могут, может быть, что-то не так, однако, когда я проверяю код, я не вижу разницы, которая бы подсказывала, почему кто-то делает, а кто-то нет ».t.
Кроме того, если я добавлю $this->Session->destroy()
к beforeFilter в AppController, то все страницы, даже HTTP, могут видеть $ _SESSION.Я на самом деле не использую $ _SESSION в своем приложении, я просто подумал, что это может быть ключом к тому, что не так.
ОБНОВЛЕНИЕ
Я принял совет Густава Бертрамаи посмотрел на строку агента пользователя.Я сравнил строку пользовательского агента с IE на компьютере, на котором возникла проблема, с IE на компьютере, на котором не было проблемы.Они были такими же, за исключением того, что у того, у которого возникли проблемы, была строка "Google Chrome Frame" в строке агента пользователя.Я удалил Google Chrome Frame с этого компьютера, перезапустил, попытался еще раз, и проблема, похоже, была решена.
Если это истинная причина, то простым решением было бы заставить пользователей удалить Chrome Frame.Однако мне интересно, есть ли обходной путь, который позволил бы им установить хромированную раму и по-прежнему работать.