HTTP协议是无状态的,服务器对于客户端浏览器的每一次请求都会认为是全新的,即便这个请求来自同一个用户。Cookie就是通过存储数据来维持客户端与服务器的通信状态的载体。如下图,
Cookie应用包括:
- 认证
- 站点参数存储
- 网上购物车
- server端session标识
- 可通过存储文本数据来实现的任何场景
Cookie Attribute包括:
- name/value pair
- expiry date
- path
- domain name
- 是否使用encrypted connection
Third-part cookie
只有set cookie的server或者同一个domain的server才能接收到客户端发送回来的cookie,然后web页面可能包含其他domain的图片或者元素,当server在获取这些元素时set的cookie就叫做third-part cookie。
网页pop-up的广告就属于这种情况, 因此Cookie的使用在在不同的国家会受到不同的限制。
Client与Server不一致的状态
对于使用Cookie的网站,比如往上购物网站,当用户添加了某个产品到购物车,这是Cookie已经改变,然后点击”Back”,那么Cookie是不会退回之前的状态。这时就会出现不一致,这种情况应用程序需要针对处理。
当Cookie被禁用时的几种替代方案
- IP:此方案不是可靠方案,因为用户的IP地址可能是自动获取,每次都不相同,或者不同的用户可以使用相同的计算机或者代理。
- Get/Post:通过Get或者Post可以在请求时传递参数,Get会将参数显示的加在URL中,而Post会在请求的body中。
- Hidden Fileds:这类似与上一方案,通过设置和读取Hidden Fields的值来传递参数。
- window.name:通过javascript使用DOM的 window.name也可以用来存储数据 (2-32 MB)
- Client-side persistence:IE支持将数据保存在浏览器历史、收藏夹、xml或者直接写入存储到磁盘的页面中