CakePHP在切换浏览器模式时Session丢失

  使用CakePHP搭建的电商系统,支付接口使用的银联支付。最近在测试的时候发现一个问题,登录用户选择商品进行支付,付款成功后点击“返回商户”按钮,页面返回后用户的登录状态丢失。经过多次测试,发现此问题只出现在双核浏览器中,以360浏览器为例,用户在选择商品的时候,默认使用的是浏览器的极速模式,但是银联在进入银行支付页面的时候,有时候会切换成IE的兼容模式,而CakePHP默认的设置会检查各个请求之间的用户是否改变,模式切换了让CakePHP认为用户发生改变,从而导致Session丢失。

  解决的办法是关闭CakePHP此项检查的设置,具体的文件为app\config下的core.php,将Session.checkAgent修改为false,代码如下:

Configure::write( ‘Session.checkAgent‘, false );

博客声明:

  本博客中的所有文章,除标题中注明“转载”字样外,其余所有文章均为本人原创或在查阅资料后总结完成,引用非转载文章时请注明此声明。—— 博客园-pallee

时间: 2024-08-28 16:41:28

CakePHP在切换浏览器模式时Session丢失的相关文章

关于微信内置浏览器安卓端session丢失问题

项目上线测试,发现微信安卓端存在用户登录无法验证session情况, 导致每次接口请求都无法识别,而苹果客户端不会出现此问题,非微信环境打开不会出现此问题,找到一些解决方案做下记录: 方案1: 由于微信内嵌浏览器对所有请求都做了代理,导致出去的ip不固定,从而导致腾讯云服务器的黏性session(基于客户端ip做的黏性session)失效.所以,解决方案有两个,要么服务器端只用一台tomcat,要么tomcat做session共享,比如 session放在Redis中.这样server1产生的s

解决文件上传插件Uploadify在火狐浏览器下,Session丢失的问题

因为在火狐浏览器下Flash发送的请求不会带有cookie,所以导致后台的session失效. 解决的方法就是手动传递SessionID到后台. $("#fileresultfiles").uploadify({ swf: '/Scripts/uploadify/uploadify.swf', uploader: '/UploadFiles.ashx', queueID: 'fileQueue', buttonText: '附件上传', auto: true, debug: false

解决使用elementUI框架el-upload跨域上传时session丢失问题

解决方法一: 1.使用elementUI框架el-upload跨域上传时,后端获取不到cookie,后端接口显示未登录,在添加了 with-credentials="true"后依然不生效 前端会报上面的错误,解决方式:后端把把*号改成httpServletRequest.getHeader("Origin") 解决方法二: 1.把config目录下的index.js文件打开,修改proxyTable属性的设置: 考虑到这个这个目标路径可能需要修改,所以打包后需要单

文档模式与IE浏览器模式

一.IE浏览器的兼容性视图 兼容性视图是微软为了兼容基于其它网页标准开发的网站,确保广大互联网用户在浏览网页时不至于受困于网页显示混乱的问题,而专门为IE8增加的一项实用功能.当IE8检测到某网站不兼容时,地址栏右侧就会出现兼容性视图按钮,只需轻轻一点,大部分网页显示就会正常了.(网页会以IE7的代码规范来显示) 它引入重要的两个概念便是“浏览器模式”和“文档模式”: 注:也可按F12进入开发人员工具来查看当前页面的浏览器模式和文档模式 二.文档模式 指定IE页面排版引擎根据哪一个版本的方式来解

IE的浏览器模式和文档模式

只有IE浏览器中才会有“浏览器模式”和“文档模式”,兼容性视图涉及两个重要的功能 便是“浏览器模式[browser mode]”和“文档模式[document mode]”,在IE8/IE9中按F12键,打开“开发人员工具”,在菜单栏中可以看到“浏览器模式”和“文档模式”的切换菜单,其中可以选择切换到 IE7/8等不同的网页模式.这个设置之后在js中可以通过navigator.userAgent获得浏览器的版本,这个一般情况是与浏览器模式对应 的,也可以通过Document.documentMo

IE浏览器模式和文档模式区别--让你开启IE浏览器兼容理解的春天

一.浏览器模式 定义:切换IE针对该网页的默认文档模式.对不同版本浏览器的条件备注解析.发送给网站服务器的用户代理(User-Agent)字符串的值.网站可以根据浏览器返回的不同用户代理字符串判断浏览器的版本和安装的功能,这样就可以向不同的浏览器返回不同的页面内容.就是告诉服务器,浏览器的版本和功能. 默认情况下,IE8的浏览器模式为IE8.用户可以通过单击地址栏旁边的兼容性视图按钮来手动切换到不同的浏览器模式.在IE8中,IE8兼容性视图会以IE7文档模式来显示网页,同时会向服务器发送IE7的

ie浏览器f12下调“浏览器模式”和“文档模式”的区别

废话不多说了,进入正题 一,浏览器模式 “浏览器模式”用于切换IE针对该网页的默认文档模式.对不同版本浏览器的条件备注解析.发送给网站服务器的用户代理(User-Agent)字符串的值.网站可以根据浏览器返回的不同用户代理字符串判断浏览器的版本和安装的功能,这样就可以向不同的浏览器返回不同的页面内容. 二,文档模式 “文档模式”用于指定IE的页面排版引擎(Trident)以哪个版本的方式来解析并渲染网页代码.切换文档模式会导致网页被刷新,但不会更改用户代理字符串中的版本号,也不会从服务器重新下载

IE下的浏览器模式和文档模式。

360安全浏览器下的IE兼容模式. 有童鞋是在上边遇到的问题.她打开IE浏览器默认的是IE9的浏览器模式,但是文本模式是IE7. [解决]IE9的默认就是IE9标准模式啊,你可能是启用了组策略里的[打开Internet Explorer 7标准模式]功能.禁用就行~ 开始菜单 - 运行 - 输入gpedit.msc后确定 - 用户设置 - 管理模板 - Windows组件 - Internet Explorer - 兼容性试图 - 在右边找到“打开Internet Explorer 7标准模式选

黄聪:如何用代码设置控制自己网站的网页在360浏览器打开时强制优先使用极速模式,而非兼容模式

最近用360浏览器访问自己的网站,发现都是被优先选用兼容模式打开,这使得网站很难看.为了让360浏览器打开网站的时候优先试用极速模式,找了一下官方论坛,发现了解决方案. 在head标签中添加一行代码: <html> <head> <meta name="renderer" content="webkit|ie-comp|ie-stand"> </head> <body> </body> <