2009-01-27 116 views
6

我有简单的PHP应用程序,它适用于除IE8 beta 2以外的所有浏览器,当我尝试使用Ajax调用(jQuery post方法)更新表字段时出现问题。使用IE8调试器,我发现IE8不会发送会话cookie,因此php脚本重定向到登录页面而不是执行请求的操作。Internet Explorer 8不通过AJAX请求会话cookie

我能做些什么来完成这项工作。

编辑: 我没有提到,我使用的代码点火器,所以我已经解决了这个问题,通过替换代码点火器默认会话实施本地。代码点火器默认会话实现使用cookie来存储所有数据。

+0

难道IE 8发正常请求上的Cookie? – Gumbo 2009-03-04 17:54:15

+0

正常请求工作正常,但在ajax请求清除cookie后。 – 2009-03-05 10:41:36

回答

-3

作为一种解决方法,您可以将SessionID作为参数嵌入到uri中。

请参阅php手册中的passing session id

5

我自己没有IE8,但是您的cookie可能被Internet Explorer奇怪的安全策略阻止。一种可能的解决方法是使用P3P(这也是获取在IFRAME中工作的cookie的方法)。

生成正确的P3P政策可以做一些工作,但你应该能够找到在http://www.p3ptoolbox.org/

0

我曾在IE8 RC1的同样的问题,你需要的信息:)

1用户转到登录页面并设置空白会话cookie
2)用户登录并设置了验证的会话cookie,javascript打开一个新窗口并关闭当前窗口。
3)新窗口打开并包含一个空白的会话cookie。
4)用户被重定向到登录页面

我改变了第1步,以便空白cookie没有设置 - 我只发送会话cookie,如果它被验证。这为我解决了这个问题。

0

我无法让IE8使用SSL证书(PK12)文件作为授权手段。如果我想在授予访问权限之前保护目录并强制浏览器中存在匹配的Web证书,它适用于IE7和所有版本的Mozilla - 只是不是IE8。它使我妻子的听写系统变得毫无用处。我注意到的另一件事是,当它设置PHPSESSID cookie时,它将域列为.net而不是mydomain.net。

8

昨天我有类似的问题,发现解决方案。我希望这也能帮助别人。

问题:假设有一个网站www.somewebsite.com和里面IFRAME whcih从我的服务器加载PHP文件,www.myserver.com/welcome.php。网站加载成功,以及我的欢迎页面,它显示了“Hello Bob”之类的东西,所以它成功找到了用户并登录了他。

之后,我的JavaScript正在调用另一个PHP文件的AJAX调用,处于“未经授权”状态,因此SESSION数据完全丢失。页面刷新后,一切工作正常。这只发生在IE8下!

我认为问题在于发送会话cookie到服务器,但是当我安装Fiddler时,我发现IE8正确地发送了cookies以及PHPSESSID,但服务器有点无法检测到正确的SESSION对象。另一个奇怪的是,第2次的服务器发送以下标题:

P3P:CP = “IDC DSP COR ADM德维戴氏PSA PSD IVAi IVDI CONI他对我们IND CNT”

,但第一次没有。在PHP脚本中手动添加该标题后,所有事情都像一个魅力!

然后,当我用Google搜索的是“P3P胡言乱语”,我发现下面的网站:

http://adamyoung.net/IE-Blocking-iFrame-Cookies

结论:确保您要发送每一个设置一个cookie首页的页眉。

这是不是不仅关系到IE8 + PHP组合,同样的问题在IE8 +的情况下,ASP.NETIE8 + JSP情况等

相关问题