ie与session丢失(新窗口cookie丢失)实测及解决方案
关于Cookie设置与IE内核浏览器登录状态保持的问题研究
在一次技术讨论中,我们注意到在IE6中使用JavaScript的open函数打开新窗口时无法获取到session信息。通过深入研究和测试,我们发现这是因为PHPSessionID的存储是进程级的,只有同一进程才能获取到。很多人提到,使用open函数或者target="_blank"时,会打开新的IE进程,因此之前的PHPSessionID不会跟随新窗口,导致无法获取session信息。
在我们的测试中,使用了IE6、7、8(但IE9启动不起来,无法确定其情况)。而在Windows自带的IE10和Chrome浏览器中并未出现此情况。Firefox浏览器也不存在此问题。
为了解决这个问题,我们尝试了一些方法并发现,如果cookie设置是延后定时失效而非进程级的,那么在新打开的窗口中也能看到cookie信息。针对使用IE内核浏览器的用户,我们可以通过配合使用cookie来防止登录状态丢失。
在PHP配置中,有一种方法可以将sid自动添加到uri中。这对于相对路径并不会自动添加,但在极少数情况下,当cookie被禁用时,我们可以依赖session和cookie来保持用户的登录状态。实际上,大多数情况下,cookie和session足以应对用户的需求。
我们也注意到在测试中使用的index.php和b.php两个页面的代码。当在index.php中设置cookie并启动session后,通过点击按钮或链接跳转到b.php页面时,b.php页面能够成功获取到session和cookie信息。这进一步证明了我们的推测,即使用延后定时失效的cookie可以在新打开的窗口中保持用户的登录状态。
我们的研究发现对于使用IE内核浏览器的用户,通过合理配置cookie和PHP的session管理,可以有效地防止登录状态丢失,提升用户体验。希望这一发现能对广大开发者有所帮助。
编程语言
- ie与session丢失(新窗口cookie丢失)实测及解决方案
- mysql5.1.26安装配置方法详解
- ASP.NET网页显示LED字体的方法
- ASP常用函数-ArrayToxml
- js实现简单秒表走动的时钟特效
- jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
- JS中用childNodes获取子元素换行会产生一个子元素
- php设置静态内容缓存时间的方法
- JS实现简单的浮动碰撞效果示例
- 解决vue中post方式提交数据后台无法接收的问题
- BootstrapTable请求数据时设置超时(timeout)的方法
- laravel清除视图缓存的代码
- PHP中基本HTTP认证技巧分析
- IntelliJ IDEA 安装vue开发插件的方法
- 高性能WEB开发 web性能测试工具推荐
- JavaScript清空数组元素的两种方法简单比较