【问题标题】:Zend Framework - Internet Explorer - phpsessid cookie issueZend 框架 - Internet Explorer - phpsessid cookie 问题
【发布时间】:2012-12-12 11:29:13
【问题描述】:

我创建了一个 Zend Framework Website App 会话密集型。

它在 Chrome 和 Firefox 中运行良好,但在 IE 中无法运行。 会话重置 IE 中的每个页面。

查看标题,我发现 IE 浏览器在同一浏览器中的每次获取或发布时都会获取不同的 phpsessid cookie,因此会话无法正常工作。在 FF 和 Chrome 中,phpsessid cookie 保持正常。

谁知道为什么这只能在 IE 中发生?

我在 bootstrap.php 中有这段代码:

$generalSession  = new Zend_Session_Namespace('MyNameHere');
$generalSession ->setExpirationSeconds(1000 * 60);

我使用以下方法恢复会话:

Zend_Auth::getInstance()->getStorage()->read();

我的 IE 隐私和安全配置设置为最低,使用 IE9。

我尝试在标题中放置一个 p3p cookie,但没有任何区别。

我错过了什么?

【问题讨论】:

    标签: internet-explorer zend-framework session session-cookies p3p


    【解决方案1】:

    所有你需要确保session starts in ZF1 is:

     //in bootstrap.php
     protected function _initsession()
        {
            Zend_Session::start();
        }
    

    这将像在普通 PHP 中一样初始化会话。

    除非您在其他地方更改它Zend_Auth uses the Zend_Session_Namespace('Zend_Auth');,否则 Zend_Auth 将无法访问您创建的任何命名空间。

    当您创建Zend_Session_Namespace() 的实例时,如果会话尚未启动,它将启动。

    如果您在资源管理器中没有获得新的会话 ID,我不得不怀疑每次您的 boostrap.php 运行(每个请求) Zend_Session_Namespace() 调用。 也许尝试在引导程序中调用 start 并在需要时实例化命名空间。您的问题中不存在的某些代码/信息也可能会影响会话。

    这里有很多猜测,祝你好运。

    【讨论】:

    • 感谢 RockyFord 的投入!
    【解决方案2】:

    我终于解决了IE的问题。

    问题是我们的开发服务器是 dev_landing.mysite.com,而 IE 拒绝来自名称中带有“_”的站点的标头...这是 IE 设计的。

    我在这里找到了完整的解释: http://odedpeer.blogspot.com.es/2009/08/why-are-my-http-cookies-rejected-by-ie.html

    继续努力!!

    【讨论】:

      猜你喜欢
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多