文档章节

IE和Firefox下的Cookie兼容问题

perofu
 perofu
发布于 2015/10/16 11:05
字数 882
阅读 464
收藏 2

IEFirefox下的Cookie兼容问题

 

    这个帖是继于"基于二级域名下Cookie共享的SSO"后续发现的问题,测试结果是这样的:用Firefox可以登录,使用IE后,部分可以登录,部分不可以登录。最初是怀疑IECookie功能没有打开引起的,测试到最后这个原因也排除了。

 

 

 

    既然是通过Cookie实现SSO,那认证必然是保存在Cookie,Cookie文件就是保存在本地的缓 存目录下(firefox下的Cookie是加密的,查不到Cookie文件),但是奇怪的是IE登录后,缓存目录下根本没有发现生成的Cookie文件,这就是不能登录的根本原因。

 

 

 

    为什么没有生成Cookie文件呢,要不没有生成,要不生成了又被IE销毁了。前者不可能发生,如果不生成 Cookie,那为什么有些浏览器行,firefox更是全部可以,只能怀疑第二个原因,Cookie是被IE自动销毁了,IE销毁Cookie是根据 Cookie的生命期,例如,Cookie2009-01-01 01:00:01生成的,有效时间是5个小时,那到了2009-01-01 06:00:01后,IE就会销毁此Cookie文件。对于IE而言,Cookie的有效时间段是理解为客户端的时间与服务器端时间的间隔,而对于 FireFox而言,Cookie的有效时间完全由服务器端的时间决定,Firefoxcookie不依赖于服务器的时间,可见,FireFox是充分 考虑到了服务器端与客户端的时差问题。

 

 

 

    立即检查系统的时间,发现系统时间和服务器没有差别,有一点纳闷,影响时间的还有一个时区(timezone),果然原因找到,时区设定错误。时区设定不正确也会影响IECookie生命期的计算,因为IE Cookie的生命期是基于GMT计算的

 

 

 

    原因总结:没有登录成功的IE,是因为没有设定正确的时区和时间,导致IE错误将保存认证信息的Cookie文件自动销毁了,所以无法登录。

 

 

    我这边发现的问题是,ie没有把cookie,带个下一个跳转的域名,不知道是Cookie文件自动销毁了,还是不支持?

 

    终于解决了,原因是IEcookie的过期时间不是GMT的格式,使用luacookie的过期时间改为【Sun, 15-Oct-2017 07:38:07 GMT】,就可以了,之前有改成10000(格式不对),不行,之后会把过期时间使用lua写成动态生成的方式。

 

    ------------------2015-10-19

 

    今天终于使用lua动态指定cookie的过期时间,一开始思路不太对,不太了解lua,下面会介绍两个思路。

 

1、使用luaos.date函数,拼接成GMT的格式:

 

       下面的逻辑有个问题,那就是到了2301~23:59时,再加一个小时,会变成2401~24:59,和GMT的时间格式有问题,不知道这一个小时内,还是否正常,于是换成第二种方法。

 

location ~ ^/test/ {

                content_by_lua '

                        local   hour=os.date("%H");

                        hour = hour + 1

                        local   time1=os.date("%a,%d-%b-%Y ");

                        local   time2=os.date(":%M:%S");

                        expiretime =   time1..hour..time2.." GMT"

                        ngx.header["Set-Cookie"]   = {"dlc=" .. ngx.var.remote_addr .. "; expires=" ..   expiretime .."; domain=.perofu.com; path=/"}

                ';

}

 

2os.time获取当前时间戳,在使用os.date格式化输出

 

location ~ ^/test/ {

      content_by_lua '

          local time1 = os.time()

          time1 = time1 + 86400

          expiretime = os.date("%a, %d-%b-%Y %H:%M:%S GMT",time1)

          ngx.header["Set-Cookie"] = {"dlc=" ..   ngx.var.remote_addr .. "; expires=" .. expiretime ..";   domain=.perofu.com; path=/"}

';

}

 

本文转载自:http://blog.csdn.net/bobbao/article/details/5105419

共有 人打赏支持
perofu
粉丝 127
博文 152
码字总数 131036
作品 0
广州
系统管理员
IE、Firefox PHP设置cookie的区别

今天利用 Cookie 做网站的用户登录,经过调试,用 setcookie("username", "username", time()+1000,"/php/"); 等储存用户的登录信息,然后利用 setcookie("username", "", time()-3600); 做 ...

刘赤龙
2010/06/08
0
0
第三方支付过程中session失效问题

第三方支付过程中session失效问题 时间 2015-05-13 12:36:23 IT社区推荐资讯 原文 http://itindex.net/detail/53436-session-问题 主题 Java 问题产行于公司p2c交易平台的一个用户充值模块。...

thinkyoung
2015/11/06
0
0
转载 Div+css浏览器兼容实例分析(一)

今天又在OECP社区发现了一篇好文章,《Div+css浏览器兼容实例分析》,因为文章太长所以分为两篇上传给大家分享。 用div+css布局来做页面相比用table来做页面当然是好处多多,比如说我前面文章...

oecp
2011/06/03
0
0
Firefox 63 将于 10 月发布,改进跟踪保护系统

Mozilla 开发人员正在为 Firefox 浏览器开发一款改进的 Tracking Protection 系统,该系统将于 10 月中旬在 63 版发布。 跟踪保护功能(Tracking Protection)可阻止 Firefox 从恶意跟踪器加...

达尔文
05/26
0
0
Mac Firefox更新导致配置文件缺失问题

今天Firefox又提示更新,烦不胜烦便点了更新,结果更新完成后重启Firefox发现提示配置文件缺失,具体描述是“无法加载您的 Firefox 配置文件。它可能已经丢失,或是无法访问。”妈蛋,又入坑...

yoyoso
2015/10/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Spring Cloud Gateway真的有那么差吗?

前言 Spring Cloud从一开始最受大家质疑的就是网关性能,那是由于Spring Cloud最初选择了使用Netflix几年前开源的Zuul作为基础,而高性能版的Zuul 2在经过了多次跳票之后,对于Spring这样的整...

Java小铺
38分钟前
1
0
SpringBoot远程调试,远程debug你的线上项目

开发环境中代码出错了,可以利用IDE的debug功能来进行调试。那线上环境出错呢? 一、假设我们的项目是部署在tomcat中,那我们就需要对tomcat进行一定对配置,配置如下。 1. windows系统中,找...

nonnetta
43分钟前
0
0
JAVA秒杀优化方向

秒杀优化方向 将请求尽量拦截在系统上游:传统秒杀系统之所以挂,请求都压倒了后端数据层,数据读写锁冲突严重,几乎所有请求都超时,流量虽大,下单成功的有效流量甚小,我们可以通过限流、...

小贱是个程序员
51分钟前
0
0
C# 统计字符串中大写字母和小写字母的个数

static void Main() { int count1 = 0; int count2 = 0; Console.WriteLine("请输入字符串"); string str = Convert.ToString(Consol......

熊二的爸爸是谁
53分钟前
0
0
分布式服务框架之远程通讯技术及原理分析

在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是...

老道士
59分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部