Cookies的各方面知识(基础/高级)深度了解


一,前言

Cookies想必所有人都了解, 但是未必所有人都精通。本文讲解了Cookies的各方面知识。

二,基础知识

1.什么是Cookies

Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。

例如,如果在用户请求站点中的页面时应用程序发送给该用户的不仅仅是一个页面,还有一个包含日期和时间的 Cookie,用户的浏览器在获得页面的同时还获得了该 Cookie,并将它存储在用户硬盘上的某个文件夹中。

以后,如果该用户再次请求您站点中的页面,当该用户输入 URL 时,浏览器便会在本地硬盘上查找与该 URL 关联的 Cookie。如果该 Cookie 存在,浏览器便将该 Cookie 与页请求一起发送到您的站点。然后,应用程序便可以确定该用户上次访问站点的日期和时间。您可以使用这些信息向用户显示一条消息,也可以检查到期日期。

Cookie 与网站关联,而不是与特定的页面关联。因此,无论用户请求站点中的哪一个页面,浏览器和服务器都将交换 Cookie 信息。用户访问不同站点时,各个站点都可能会向用户的浏览器发送一个 Cookie;浏览器会分别存储所有 Cookie。

Cookie 帮助网站存储有关访问者的信息。一般来说,Cookie 是一种保持 Web 应用程序连续性(即执行状态管理)的方法。除短暂的实际交换信息的时间外,浏览器和 Web 服务器间都是断开连接的。对于用户向 Web 服务器发出的每个请求,Web 服务器都会单独处理。但是在很多情况下,Web 服务器在用户请求页时识别出用户会十分有用。例如,购物站点上的 Web 服务器跟踪每位购物者,这样站点就可以管理购物车和其他的用户特定信息。因此,Cookie 可以作为一种名片,提供相关的标识信息帮助应用程序确定如何继续执行。

使用 Cookie 能够达到多种目的,所有这些目的都是为了帮助网站记住用户。例如,一个实施民意测验的站点可以简单地将 Cookie 作为一个 Boolean 值,用它来指示用户的浏览器是否已参与了投票,这样用户便无法进行第二次投票。要求用户登录的站点则可以通过 Cookie 来记录用户已经登录,这样用户就不必每次都输入凭据。

2.Cookies如何存储

Cookies保存在用户的本地机器上,不同的浏览器存储在不同的文件夹中,并且按照域名分别保存。即网站之间的Cookies不会彼此覆盖。

IE浏览器的用户可以通过在本地的文档中找到Cookies的txt文件, 不同操作系统的位置不同,windows server 2003/xp都保存在:

C:\Documents and Settings\Administrator\Cookies 文件夹下。

其中名称txt按照域名保存,比如localhost域下的cookies为:

administrator@localhost[1].txt 或者 administrator@localhost[2].txt

其中后面的[1]和[2]是随着每次保存交替变化的。

3.Cookies如何传递

Cookies的信息是在Web服务器和浏览器之间传递的。保存在Http请求中。

(1)请求页面

在请求一个页面的Http头中,会将属于此页面的本地Cookies信息加在Http头中,注意下面加粗的部分:

下载地址

工具函数说明:

方法签名: jQuery.cookie(name, subName, value,  options)

方法说明:读取、写入、删除Cookies

方法参数:

名称 说明 举例
name cookies的主键值 读取主键:
$.cookie("singleKey")

写入cookies,值为字符串:
$.cookie("singleKey", "", "singleKey-value", { expires: 1, path: "/", secure: false })
subName 子键名称。在写入时请传递空或者null 读取子键:
$.cookie("multiKey", "subName1")

写入cookies,值为对象:
var subNameObj = { subName1: "aaa", subName2: "bbb", subName3: "ccc" };$.cookie("multiKey", "", subNameObj, { expires: 1, path: "/", secure: false });
value Cookies值,可以是字符串或者对象。
如果是对象,则将对象的每个属性保存在Cookies子键。
参见上面实例。
options 参数:
expires:可以是数字或者Data类型的对象。
如果传入数字表示几天后过期。
path:路径,默认为域名根目录(“/”)。
secure:是否启用加密,默认为否。



指定过期时间:

var myDate = new Date();myDate.setFullYear(2009, 10, 10);$.cookie("singleKey", "", "singleKey-value", { expires: myDate, secure: false })  

1天后过期:

var time = Date();$.cookie("singleKey", "", "singleKey-value", { expires: 1, path: "/", secure: false })

« 
» 

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3