【问题标题】:Session doesn't create after Ajax Request on Internet Explorer在 Internet Explorer 上的 Ajax 请求后未创建会话
【发布时间】:2012-07-01 21:36:38
【问题描述】:

我正在开发一个网站,最近开始调试 Internet Explorer。身份验证是通过对 PHP Zend 操作的 Ajax POST 请求进行的,该操作检查登录/通过数据库,如果触发“记住我”,则写入 cookie。 JSON 与状态码一起发送回 Ajax。 (很好,警告,错误等......) 然后是这样的:

if( result.code == 0 ){ 
   window.location.reload();
   return false;
}

首先,IE 尝试在登录提交后下载一些包含 JSON 响应的文件,因此我对标头进行了一些更改以绕过该行为。

但是现在,IE 什么都不做。我的意思是,Ajax 的成功函数接收到表示一切正常的好代码(0),它重新加载页面,但仍然没有登录。

在我们的日志中,Zend 也表示一切正常。

注意:我注意到只有当我选中“记住我”复选框时才能登录。

你认为这是从哪里来的?它在其他浏览器上运行良好,我快疯了。

编辑 1:添加 P3P 标头后没有更改。

【问题讨论】:

    标签: php ajax internet-explorer zend-framework session


    【解决方案1】:

    这是一个很长的镜头,但是页面可能被浏览器缓存了吗?换句话说,这些方法是否有帮助: window.location.reload with clear cache

    另外,this answer 中的链接突出显示了一些其他需要检查的内容(包括影响 IE 但不影响 FF 的时差)

    【讨论】:

      【解决方案2】:

      我们终于明白了。 谢谢克里斯蒂安,this link 确实提供了帮助。 出于安全原因,我们在登录检查后使用 Zend_Session::regenerateId() 重新生成会话 ID。在其他浏览器只重新生成会话 ID 的情况下,IE 会销毁并生成一个新的。所以它失去了连接。 (我想)

      【讨论】:

        猜你喜欢
        • 2012-11-01
        • 2010-10-03
        • 2019-08-08
        • 1970-01-01
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多