0

我正在开发一个网站,最近开始调试 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 标头后没有更改。

4

2 回答 2

1

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

或者,此答案中的链接突出显示了要检查的其他一些事项(包括影响 IE 但不影响 FF 的时差)

于 2012-07-02T19:03:25.380 回答
0

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

于 2012-07-03T15:02:04.167 回答