关于Cookie

48 篇文章 0 订阅

关于Cookie的思考

Cookie是什么?
Cookie产生的背景是源于年代并不久远但是却很经典的HTTP协议在互联网上的急速发展。互联网之所以成功很大程度上取决于传输协议HTTP协议的两大特性:
1、 简单。这个没什么可多说的。简单就是美,复杂的东西总是难以流行,想想古语所说阳春白雪和下里巴人就明白了。
2、 无状态。无状态意味着服务器可以满足更多次的请求,这在成天嚷着要带宽的互联网发展初期是确保www成功的重要特性。
但是到了互联网的深层次发展,带宽等限制不存在了,人们需要更复杂的互联网交互活动,就必须同服务器保持活动状态。于是,在浏览器大发展初期,适应人民群众的需求,技术上推出了各种保持web浏览状态的手段,其中就包括了Cookie技术。
总体上,按照状态保持存储信息的主要位置来讲,状态保持分为:
1、 服务器端存储状态数据。如通常意义上的session
2、 客户端保持存储,cookie技术和web页隐藏字段以及URL串存储。都是主要数据存储在客户端或者发往客户端的信息流中(HTML流),每一次客户汇报存储的数据提交给服务器,让服务器知道自己上一次访问服务器时候的状态。
3、 第三地存储。例如数据库存储会话数据,基本上是1的变种

cookie的存储和传输
关于cookie的规范可以查找:
http://www.w3.org/Protocols/rfc2109/rfc2109.txt
cookie实际上是一段经过了编码的字符串,具体来讲存储cookie的实际过程是以 key=value的形式存储的,而且一个cookie为一个连续的字符串,每一个key之间“;”分隔,cookie之间则以#分割。
在Http的header中,cookie被传输,按照如下的格式:
   set-cookie      =       "Set-Cookie:" cookies
   cookies         =       1#cookie
   cookie          =       NAME "=" VALUE *(";" cookie-av)
   NAME            =       attr
   VALUE           =       value
   cookie-av       =       "Comment" "=" value
                   |       "Domain" "=" value
                   |       "Max-Age" "=" value
                   |       "Path" "=" value
                   |       "Secure"
                   |       "Version" "=" 1*DIGIT
Cookie是同站点密切相关的,也就说,你的站点发放的Cookie是不会通过IE/NE等发送给其他的站点。这些浏览器是通过web站点来区分的。具体的是host来区分的。但是如果你指定了domain的属性,情况就不同了。那么只有指定domain的站点以及子站点(下级域名,注意还是域名)可以看到此cookie.
通常在IE中,Cookie是存放在IE进程的共享内存的。也就说,只要是统一进程的IE窗口,同一站点的cookie是共享的。

Cookie的消灭
直接给cookie赋””值是错误的,应当指示cookie的Max_age(ie是exprise)为一个过去值。譬如1980-1-1,这样,浏览器发现了这样的Cookie后就不会保存在内存中(更不会在辅存)这样才算清掉了cookie。我今天就遇到了这样的情形:
 我在服务器端设置失效期限为当前时间(那么理论上当语句执行完毕cookie就已经过期了),但是发送回客户端后,并没有(客户端时间之后服务期时间)。客户浏览器会认为这个cookie还有效而继续保持,在下一次提交时刻仍然提交到服务器,造成了逻辑处理上误解。

引用一篇关于asp.net的cookie的技术文章
 http://www.microsoft.com/china/msdn/library/webservices/asp.net/asppcookieless.mspx

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值