不同浏览器Cookie有效期问题

不同浏览器Cookie有效期问题

昨天项目迁移了测试服务器,之后奇怪的问题出现了。

IE、谷歌无法登陆,火狐可以登陆。
这个项目先后部署过两个测试服务器、一台正式服务器,登陆都是正常的,这次却突然出现这种奇怪的问题,很是纠结。
通过查看代码,逻辑很清晰,不应该有问题。
跟踪浏览器
信息,发现登陆逻辑正常执行,最后进行了页面跳转,之后又跳转回来,那么应该是权限验证失败。
没有抛出无权限提示,那么只能是读取Cookie失败。
检查IE、谷歌的Cookie记录,发现登陆页面没有完成Cookie写入,这种简单的Cookie操作,.NET不应该会有问题的。
开始百度,百度垃圾,没找到想要的。
开始谷歌,找到一个差不多的(
服务器的时间和时区设置可能影响Cookie,IE而言,Cookie的有效时间段是理解为客户端的时间与服务器端时间的间隔,对于FireFox而言,Cookie的有效时间完全由服务器端的时间决定
修改本机时间为昨天,测试,登陆成功,基本确定服务器问题。
找运维,检查服务器时间时区设置,果然是这个问题。
修改,登陆成功!
 
IE和Firefox下的Cookie兼容问题 .
用Firefox可以登录,使用IE后,部分可以登录,部分不可以登录。最初是怀疑IE的Cookie功能没有打开引起的,测试到最后这个原因也排除了。
 
既然是通过Cookie实现SSO,那认证必然是保存在Cookie中,Cookie文件就是保存在本地的缓存目录下(firefox下的Cookie是加密的,查不到Cookie文件),但是奇怪的是IE登录后,缓存目录下根本没有发现生成的Cookie文件,这就是不能登录的根本原因。
 
为什么没有生成Cookie文件呢,要不没有生成,要不生成了又被IE销毁了。前者不可能发生,如果不生成Cookie,那为什么有些浏览器行,firefox更是全部可以,只能怀疑第二个原因,Cookie是被IE自动销毁了,IE销毁Cookie是根据Cookie的生命期,例如,Cookie是2009-01-01 01:00:01生成的,有效时间是5个小时,那到了2009-01-01 06:00:01后,IE就会销毁此Cookie文件。对于IE而言,Cookie的有效时间段是理解为客户端的时间与服务器端时间的间隔,而对于FireFox而言,Cookie的有效时间完全由服务器端的时间决定,Firefox的cookie不依赖于服务器的时间,可见,FireFox是充分考虑到了服务器端与客户端的时差问题。
 
立即检查系统的时间,发现系统时间和服务器没有差别,有一点纳闷,影响时间的还有一个时区(timezone),果然原因找到,时区设定错误。时区设定不正确也会影响IE对Cookie生命期的计算,因为Cookie的生命期是基于GMT计算的。
 
原因总结:没有登录成功的IE,是因为没有设定正确的时区和时间,导致IE错误将保存认证信息的Cookie文件自动销毁了,所以无法登录。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112697.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎么获取股票历史数据?获取股票历史数据Excel

    怎么获取股票历史数据?获取股票历史数据Excel还有吧友在问怎么获取股票历史数据…这个获取股票历史数据Excel的工具再说一次哦!!!亲测可以获取A股、港股、美股所有个股股票历史数据,获取的股票历史数据是Excel文件,方便导入和分析。另外还有A股4000+个股历史数据Excel打包的文件,也是免费的。

    2022年6月24日
    61
  • 独立成分分析(Independent Components Analysis)「建议收藏」

    独立成分分析(Independent Components Analysis)「建议收藏」首先我们对ICA算法做一些形式化的描述:ICA是用来分离混合源的技术。所以我们准备先混合,再分离,我们定义两个独立的源,上面的称为A,下面的称为B,代码如下: 1然后我们将其线性混合,上面的为A-2*B下面的为1.73*A+3.41*B2之后使用fastica函数,就将两个源分开了:3完整的工程在这里下载:http://research.ics.aalto.fi

    2022年5月16日
    40
  • OpenResty 最佳实践学习–实战演习笔记(5)

    本篇整理openresty的子查询和执行阶段!子查询 capture a —> b 子查询 ,查询内部对另外一个location做了一次查询,并返回结果!调用另一个location不发htttp,相当于内部调用了一次c函数! 京东商品详情页 –openresty的capture (1)很多api (2)无法降级服务 最好只有一个API接口! 每个loca

    2022年2月26日
    75
  • h5页面如何生成二维码_js 根据内容 生成二维码

    h5页面如何生成二维码_js 根据内容 生成二维码uniapp,vue皆可使用首先去下载qrcode.js链接可以在根目录中新建utils文件夹,把下载的js放进去)1.引入js并创建data变量importqrcodefrom’@/utils/qrcode.js’data(){ return{ url:””, qrcodeURL:”” } }, methods:{ //生成url二维满 creatQrCode(){ this.url=window.location.h

    2022年9月25日
    4
  • sql与hsql的区别以及分别怎么用!

    sql与hsql的区别以及分别怎么用!在java开发当中,会用到一些框架,比如说sh(struts和hibernate),ssh(struts,spring以及hibernate)等这些框架,hibernate因为连表方便,直接将表映射到java实体类中,因此用到的比较广泛,那sql和hsql区别在于哪里呢?又如何使用呢?1.java中用sql实现增删改查,sql是直接面向数据库的,下面附上一段代码解析:try{24…

    2022年9月22日
    5
  • 关于局域网和广域网的叙述中正确的是_城域网是介于广域网和局域网

    关于局域网和广域网的叙述中正确的是_城域网是介于广域网和局域网关于局域网和广域网

    2022年10月18日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号