谈谈cookie在各浏览器下的共用情况

如果你对什么是 cookie 还不了解,则此篇文章不适合你看,如果你希望了解一下,则请先了解什么是 cookie 会对你了解此篇文章有作用:


    Cookie


   


   


    Cookie


    (
现在绝大部分站点都会用到 cookie记录小部分信息。)

cookie 有如下属性:
   
名称: 指给 cookie 设置的名称,不同的浏览器,cookie 存储的方式不同;
   
内容:cookie 的值;
   
主机: cookie 所属的站点;
   
路径: 指明此 cookie 只在指定站点下的指定路径范围内的页面可以获取,对于全站 cookie,路径为 “/”
   
过期时间:指此 cookie从创建开始到消亡的时间段。有二种情况:
        1
、指定过期时间,cookie会存储到硬盘上,为了下次能读取。cookie 到了指定的过期时间,自动消亡;
        2
、不指定时间,则会话结束时自动消亡,此种情况的 cookie,不会保存到硬盘上。

好,简单的介绍了 cookie 之后,接下来开始我们的正文。在此不对比各浏览器之间的性能、HTML兼容性、个性化使用、等,只在于说说 cookie 在各浏览器下的多窗口共用使用情况,

 

引发写此篇文章的原因:


   


   


   
下面给出对比情况:

对比的浏览器

 指定 cookie 的过期时间

未指定 cookie 过期时间

Mozilla Firefox 3.0

多窗口共用 cookie(公用)

公用

IE 7.0

公有

私有

Opera 9.60

公有

公用

Apple Safari 3.1

公有

公用

Google Chrome 0.2.149.30

公有

公用

说明:腾讯的TT,傲游(Maxthon)等其实质是用的IE内核,因此IE是什么情况,他们就是什么情况。

根据上面表格说明,只有 IE浏览器,在没有指定 cookie的过期时间情况下,此种 cookie是专属于当前窗口(会话)的。

 

 

 

为什么除IE之外的浏览器都这样设计,我个人搞不明白,有人清楚的冒个泡,哈哈。

测试的WEB服务器:IISasp.net

 


    clid


   

对于 asp.net2.0,有一个有趣的情况。由于微软用了 名称为 ASP.NET_SessionId cookie 来记录第一次打开的会话ID,如果在web.config中配置的 Session 生存期内,浏览器没有与后台交互,则后台 Session 会自动结束。当后台 Session 结束后,浏览器再次请求时,后台ASP.NET会创建一个新的会话Session,并且把此新 SessionID设置为 ASP.NET_SessionId记录的值,而不是新命名SessionID。这样会给人一些假象,以为还是原来的 Session,其实原来的 Session已经结束,并且原来保存在 Session的所有内容已不存在。

ASP.NET_SessionId 保存会话的唯一标识符。这个会话 Cookie 为浏览器窗口关闭时自动消亡( cookie 的第二种情况)。
记录当前框架的版本;
另外,在asp.net2.0中,每个会话开启后,微软会设置二个 cookieclid ASP.NET_SessionId
而实际应用下,抛开技术层面,从用户使用和体验角度来说,是允许一台电脑可以打开多个窗口用不同帐户登录的,就大家都在使用的QQ,如果现在腾讯限制一台电脑在同一时间只允许有一个QQ帐号登录,我想,有很多用户是不能接受的(MSN就限制了一台电脑同一时间只能有一个帐号登录,这也是有很多人不愿意使用MSN的其中一个原因,题外话了)。
那么,根据这种结果,表明除IE之外的浏览器,如果一个站点是用 cookie 记录帐户登录信息,则一台电脑同时只能用一个帐户登录相同站点了。
其实质是:除IE之外的浏览器,不管开几个单独的窗口,都是共用一个会话(Session)IE则是一个单独的窗口开一个会话。
根据 上面描述的 cookie 的过期时间特性,我们可以理解第一种情况的 cookie 可以在浏览器的多窗口间共用,而第二种情况的 cookie,是会话结束就自动消亡,我们会认为,单独打开的多个窗口(在一个页面中弹出或打开的新窗口应该属于主窗口)是没有联系的,也就是说,一个窗口一个会话,但事实并不是如此。
当我想打开多个浏览器窗口,分别用同一站点的多个不同帐号登录站点时,按照我的预想,应该是不同窗口登录后,操作都是针对各自帐号的。但却引起帐号信息混乱,录入数据出错。因此查找原因,并用不同浏览器测试。最后发现是因为站点用了 cookie 记录登录帐号信息,问题出在 cookie 在多个窗口间的共用性。
注意:这里的多窗口,指的是运行多个浏览器程序,不是指有些浏览器里开的多个标签页。
是与 Web 站点而不是与具体页面关联的,所以无论用户请求浏览站点中的哪个页面,浏览器和服务器都将交换 http://www.soa365.com/ Cookie 信息。用户访问其他站点时,每个站点都可能会向用户浏览器发送一个 Cookie,而浏览器会将所有这些 Cookie 分别保存。
以后,如果该用户再次访问站点上的页面,当该用户输入 URL http://www.soa365.com/ 时,浏览器就会在本地硬盘上查找与该 URL 相关联的 Cookie。如果该 Cookie 存在,浏览器就将它与页面请求一起发送到站点,WEB应用程序就能确定该用户上一次访问站点的记录信息。您可以根据这些信息向用户发送一条消息,也可以检查过期时间或执行其他有用的功能。
假设在用户请求访问网站 http://www.soa365.com/ 上的某个页面时,您的应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie。用户的浏览器在获得页面的同时还得到了这个 Cookie,并且将它保存在用户硬盘上的某个文件夹中。
是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。用户每次访问站点时,Web 应用程序都可以读取 Cookie 包含的信息。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值