我遇到了CakePHP应用程序的问题。这似乎只发生在IE中,并且仅在某些计算机上。它在发生这种事情的计算机上是一致的。CakePHP Cookie /会话问题
问题之一: 用户已经登录并https://example.com/users/view在页面上点击并注销。用户被重定向到http://example.com,并且似乎被注销,直到用户访问另一个https页面,并且他们仍然登录。他们可以多次单击注销,但他们总是通过https登录并仅登录HTTP。
问题二:在https://example.com/users/signin他们将被重定向到http://example.com现在出现 用户日志中记录用户去https://example.com/admin/slides,不知道它,但现在已经退出,点击任何其他网页上(。或者刷新当前页面)会要求他们重新登录。
我不知道发生了什么事。我已阅读并尝试了解决这两个类似问题的解决方案:Session not saving when moving from ssl to non-ssl和Cookie not renewing/overwriting in IE,但我仍然遇到同样的问题。 (我不知道这是否意味着什么)是当我在HTTP页面上同时调试$_SESSION
和$this->Session->read()
时总是只有$ this-> Session-> read()返回一个值。在HTTPS页面上,一些总是返回相同的值,其他人总是只返回$ this-> Session-> read()的值。
例如,http://example.com和https://example.com/users从来没有看到$ _SESSION,https://example.com/carts总是看到$ _SESSION。我不确定,但我想,也许安全页面应该看到它,因为有些不可能有可能是错误的,但是当我检查代码时,我看不出有什么区别,说明它为什么会这样做,吨。
此外,如果我将$this->Session->destroy()
添加到AppController中的beforeFilter,那么所有页面甚至HTTP都可以看到$ _SESSION。我实际上并没有在我的应用程序中使用$ _SESSION,我只是认为这可能是什么错误的线索。
UPDATE
我tooked古斯塔夫·伯特伦的意见,并看了看用户代理字符串。我将计算机上遇到问题的IE浏览器的用户代理字符串与计算机上没有问题的IE进行了比较。除了有问题的用户代理字符串中有“谷歌浏览器框架”之外,它们是相同的。我从那台电脑上卸载了Google Chrome Frame,重新启动,再次尝试,问题似乎解决了。
如果这是真正的原因,那么简单的解决方案是让用户卸载Chrome框架。不过,我想知道是否有解决方案可以让他们安装铬框架并仍能正常工作。
(我认为你已经淘汰了平常的缓存嫌疑人。)哪些版本的IE?修改页面标题(缓存控制,等 - 请参阅http://support.microsoft.com/kb/234067)有什么影响? – OpenSorceress
会话内容是乱码还是其他?可能是安全选项.. – Dunhamzzz
页面是否有任何Flash内容?您是否尝试将会话安全性从HIGH更改为LOW? – binoy