当前位置:  开发笔记 > 编程语言 > 正文

Internet Explorer 8不会为ajax请求传递会话cookie

如何解决《InternetExplorer8不会为ajax请求传递会话cookie》经验,为你挑选了2个好方法。

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

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

编辑:我没有提到我正在使用Code Igniter,所以我通过将Code Igniter默认会话实现替换为本机问题解决了这个问题.代码点火器默认会话实现使用cookie来存储所有数据.



1> 小智..:

昨天我有类似的问题,并找到了解决方案.我希望这也能帮助别人.

问题:假设有一个网站www.somewebsite.com和IFRAME,它从我的服务器www.myserver.com/welcome.php加载php文件.网站加载成功以及我的欢迎页面,它显示类似"Hello Bob"的内容,因此它成功找到了用户并登录了他.

之后我的JavaScript正在对另一个PHP文件进行AJAX调用,并且响应处于"未授权"状态,因此SESSION数据完全丢失.页面刷新后,一切正常.而这只发生在IE8下!

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

P3P:CP ="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"

但第一次没有.在PHP脚本中手动添加该标题后,一切都像魅力一样!

然后,当我用Google搜索"p3p abracadabra"时,我发现了以下网站:

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

结论:确保在每个设置cookie的页面上发送标题.

而且这不仅IE8 + PHP组合有关,在IE8 + ASP.NET,IE8 + JSP等情况下也会出现同样的问题.



2> mikl..:

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

生成正确的P3P策略可能有点工作,但您应该能够在http://www.p3ptoolbox.org/找到所需的信息.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有