Cookie:修订间差异

求闻百科,共笔求闻
添加的内容 删除的内容
(机器人:移除1个参考文献)
(机器人:修正重定向)
 
第17行: 第17行:
Cookie保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。
Cookie保存在客户端中,按在客户端中的存储位置,可分为内存Cookie和硬盘Cookie。


内存 Cookie 由[[浏览器]]维护,保存在[[内存]]中,浏览器关闭即消失,存在时间短暂。硬盘Cookie保存在[[硬盘]]里,有过期时间,除非用户手动清理或到了过期时间,硬盘Cookie不会清除,存在时间较长。所以,按存在时间,可分为非持久Cookie和持久Cookie。
内存 Cookie 由[[网页浏览器|浏览器]]维护,保存在[[随机存取存储器|内存]]中,浏览器关闭即消失,存在时间短暂。硬盘Cookie保存在[[硬盘]]里,有过期时间,除非用户手动清理或到了过期时间,硬盘Cookie不会清除,存在时间较长。所以,按存在时间,可分为非持久Cookie和持久Cookie。


== 用途 ==
== 用途 ==
因为[[HTTP|HTTP协议]]是无状态的,即[[服务器]]不知道用户上一次做了什么,这严重阻碍了[[交互式Web应用程序]]的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么,所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookie中包含的信息,借此维护用户跟服务器[[会话 (计算机科学)|会话]]中的状态。
因为[[超文本传输协议|HTTP协议]]是无状态的,即[[服务器]]不知道用户上一次做了什么,这严重阻碍了[[交互式Web应用程序]]的实现。在典型的网上购物场景中,用户浏览了几个页面,买了一盒饼干和两瓶饮料。最后结帐时,由于HTTP的无状态性,不通过额外的手段,服务器并不知道用户到底买了什么,所以Cookie就是用来绕开HTTP的无状态性的“额外手段”之一。服务器可以设置或读取Cookie中包含的信息,借此维护用户跟服务器[[会话计算机科学|会话]]中的状态。


在刚才的购物场景中,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把Cookie发送给服务器,于是服务器知道他之前选购了什么。用户继续选购饮料,服务器就在原来那段Cookie里追加新的商品信息。结帐时,服务器读取发送来的Cookie即可。
在刚才的购物场景中,当用户选购了第一项商品,服务器在向用户发送网页的同时,还发送了一段Cookie,记录着那项商品的信息。当用户访问另一个页面,浏览器会把Cookie发送给服务器,于是服务器知道他之前选购了什么。用户继续选购饮料,服务器就在原来那段Cookie里追加新的商品信息。结帐时,服务器读取发送来的Cookie即可。
第28行: 第28行:
== Cookie的缺陷 ==
== Cookie的缺陷 ==
# Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
# Cookie会被附加在每个HTTP请求中,所以无形中增加了流量。
# 由于HTTP请求中的Cookie是明文传递的,所以安全性成问题,除非使用[[超文本传输安全协定]]。
# 由于HTTP请求中的Cookie是明文传递的,所以安全性成问题,除非使用[[超文本传输安全协议|超文本传输安全协定]]。
# Cookie的大小限制在4 KB左右,对于复杂的存储需求来说是不够用的。<ref>{{cite book | title=HTML5: Up and Running | | publisher=O’Reilly | author=Mark Pilgrim | year=2010 | isbn=978-0596806026}}</ref>
# Cookie的大小限制在4 KB左右,对于复杂的存储需求来说是不够用的。<ref>{{cite book | title=HTML5: Up and Running | | publisher=O’Reilly | author=Mark Pilgrim | year=2010 | isbn=978-0596806026}}</ref>


第66行: 第66行:
鉴于Cookie的局限和反对者的声音,有如下一些替代方法:
鉴于Cookie的局限和反对者的声音,有如下一些替代方法:
* [http://sourceforge.net/projects/brownie Brownie方案],是一项[[开放源代码]]工程,由[[SourceForge]]发起。Brownie曾被用以共享在不同域中的接入,而Cookie则被构想成单一域中的接入。这项方案已经停止开发。
* [http://sourceforge.net/projects/brownie Brownie方案],是一项[[开放源代码]]工程,由[[SourceForge]]发起。Brownie曾被用以共享在不同域中的接入,而Cookie则被构想成单一域中的接入。这项方案已经停止开发。
* [[P3P]],用以让用户获得更多控制个人隐私权利的[[网络传输协议|协议]]。在浏览网站时,它类似于Cookie。这项方案也已经停止开发。
* [[隱私權偏好平台|P3P]],用以让用户获得更多控制个人隐私权利的[[网络传输协议|协议]]。在浏览网站时,它类似于Cookie。这项方案也已经停止开发。
* 在与服务器传输数据时,通过在地址后面添加唯一[[查询串]],让服务器识别是否合法用户,也可以避免使用Cookie。
* 在与服务器传输数据时,通过在地址后面添加唯一[[查询串]],让服务器识别是否合法用户,也可以避免使用Cookie。