在Internet Explorer上的Ajax请求之后,会话不会创建

时间:2012-07-01 21:36:39

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

我正在网站上工作,最近开始调试Internet Explorer。通过对Zend操作的Ajax POST请求进行身份验证,该操作检查对数据库的登录/传递,并在触发“记住我”时写入cookie。 JSON使用状态代码发送回Ajax。 (很高兴,警告,错误等......) 然后是这样的事情:

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

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

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

在我们的日志中,Zend说一切都还可以。

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

您认为这来自哪里?它在其他浏览器上运行良好,我很疯狂。

编辑1:添加P3P标题后没有变化。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我们终于明白了。 谢谢Christian,this link有所帮助。 出于安全原因,我们在登录检查后使用Zend_Session :: regenerateId()重新生成会话ID。在其他浏览器仅重新生成会话ID的情况下,IE会销毁并生成新的会话ID。所以它松动了连接。 (我想)