不同浏览器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文件自动销毁了,所以无法登录。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • IntelliJ IDEA 整理代码格式 快捷键[通俗易懂]

    IntelliJ IDEA 整理代码格式 快捷键[通俗易懂]一、前言在开发的过程中,项目代码格式尤为重要,但是有些开发人员经常会不注意细节,导致代码阅读性很差,如下图所示:二、解决方案打开IDEA,按Ctrl+Alt+L键,进行整理代码格式,可以看到代码已经进行整理PS:如果和qq热键冲突的话,需要先将qq的热键Ctrl+Alt+L设置为无,如下图所示:…

    2022年10月12日
  • 什么是守护进程?

    什么是守护进程?在了解守护进程之前,需要先知道什么是什么是终端?什么是作业?什么是进程组?什么是会话?在Linux中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个

  • unittest测试框架原理_学软件测试4个月没找到工作

    unittest测试框架原理_学软件测试4个月没找到工作unittest框架解析unittest是python的单元测试框架,unittest单元测试提供了创建测试用例,测试套件以及批量执行的方案,unittest在安装pyhton以后就直接自带了,直接importunittest就可以使用。作为单元测试的框架,unittest也是可以对程序最小模块的一种敏捷化的测试。在自动化测试中,必须需要知道所使用语言的单元测试框架。利用单元测试框架,创建一个类,该类继承unittest的TestCase,这样可以把每个case看成是一个最小的单元,

    2022年10月15日
  • 两个元素的矩阵乘除法「建议收藏」

    矩阵的乘除法: 1 矩阵相乘,两个矩阵只有当左边的矩阵的列数等于右边矩阵的行数时,两个矩阵才可以进行矩阵的乘法运算 主要方法就是:用左边矩阵的第一行,逐个乘以右边矩阵的列,第一行与第一列各个元素的乘积相加,第一行与第二列的各个元素的乘积相加。。。。第二行也是,逐个乘以右边矩阵的列。。。。第三行。。。。。。。最后得出结果不明白的可以继续往下看   2…

  • Flash cookie — 本地共享对象(LOCAL SHARED OBJECTS)

    Flash cookie — 本地共享对象(LOCAL SHARED OBJECTS)写道本地共享对象(有时也称为“Flashcookie”)是一些可由您访问的站点在您的计算机上创建的数据文件。共享对象大多数情况下用来增强您浏览Web的体验。网站可以在您的计算机上编写cookie,当您下次访问该网站时,它将加载该cookie及其信息,从而使您拥有一种更加个性化的体验。例如,您可能让站点记住您的登录名。该信息存储在cookie中,并在您下次访问时被检索…

  • 最近邻插值、双线性插值、双三次插值

    最近邻插值、双线性插值、双三次插值 1.最近邻插值越是简单的模型越适合用来举例子,我们就举个简单的图像:3X3的256级灰度图,也就是高为3个象素,宽也是3个象素的图像,每个象素的取值可以是0-255,代表该像素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色。假如图像的象素矩阵如下图所示(这个原始图把它叫做源图,Source):234  38   2267    44   1289    65 …

发表回复

您的电子邮箱地址不会被公开。

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