Cookie ── 存储在用户本地终端上的浏览器缓存数据
Cookie 及其复数形式 Cookies,中文意思为 "浏览器缓存";指某些网站为辨别用户身份、session 跟踪而存储在用户本地终端上的数据 (通常,经过加密)。定义于 RFC2109 和 RFC2965 的都已废弃,最新规范是 RFC6265。
1993 年 03 月网景公司雇员 Lou Montulli 最早发明 Cookie。
Cookie 由服务器端生成,发送给 User-Agent (一般指浏览器),浏览器将 Cookie 的 key/value 保存到某一目录文件内;下次请求同一网站时,会把该 Cookie 发送给服务器 (前提是,浏览器设置为启用 cookie)。Cookie 的名称和值由服务器端定义,对于 JSP 而言,也可直接写入 jsessionid;这样,服务器可以知道该用户是否是合法用户,以及是否需要重新登录等。服务器可以设置或读取 Cookies 中包含的信息,借此维持用户跟服务器之间的会话状态。
Cookie 安全级别,包括:组织所用 Cookie,接受所有 Cookie,中级和高级。
服务器可以利用 Cookies 包含信息的任意性,来筛选并经常性维护这些信息,以判断在 HTTP 传输中的状态。Cookies 最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是 Cookies 的功用。另一个重要应用场合是 "购物车" 之类处理。用户可能会在一段时间内在同一家网站的不同页面中选择不同的商品,这些信息都会写入 Cookies,以便在最后付款时提取信息。
Cookies 是服务器存放在您电脑里的资料 (.txt 格式文本文件),好让服务器轻松辨认您的计算机。当您浏览网站时,Web 服务器会先发送一份小资料放到您的计算机中,Cookies 会把您在网站上所打的文字或是一些选择,都记录下来。当您下次再访问同一个网站时,Web 服务器会先看看有没有上次留下的 Cookies 资料,有的话,就会依据 Cookie 里的内容来判断使用者,送出特定的网页内容。
许多网站都有新用户注册功能,当注册成功后,等下次再访问该站点时,会进行自动识别。更重要的是,网站可以利用 cookies 跟踪统计用户访问该网站的习惯,比如:什么时间访问,访问了哪些页面,在每个网页的停留时间等。利用这些信息,一方面是可为用户提供个性化服务;另一方面,也可作为了解所有用户行为的工具,对于网站经营策略的改进有一定参考价值。譬如:你在某家航空公司站点查阅航班时刻表,该网站可能就创建了包含你旅行计划的 Cookies,它会记录你在该站点上曾访问过的 Web 页面,在你下次访问时,网站会根据你的情况对显示的内容进行调整,将你可能感兴趣的内容放在前列。这是高级 Cookie 应用。
目前 Cookies 最广泛的应用,是记录用户登录信息,下次访问时无需再输入用户名、密码 —— 这种用法,也存在着用户信息可能泄密的问题,尤其在多个用户共用一台电脑时,很容易出现这样的问题。
有人认为,网站利用 cookies 可能存在侵犯用户隐私的问题,但由于大多用户对此并不了解,且对用户个人信息的利用大多是作为统计数据,一般不会造成用户的直接损失;因此,对于 cookies 与用户隐私权的问题并没有相关法律约束,很多网站仍然在利用 cookie 跟踪用户行为,有些程序要求用户必须开启 cookie 才能正常使用。
IE 浏览器可通过 “隐私” 选项中隐私设置的高低,来决定是否允许网站利用 cookie 跟踪自己的信息,从全部限制到全部允许,或限制部分网站,也可通过手动方式对具体的网站设置允许或禁止使用 cookies。IE浏览器的默认设置是 “中级”-对部分网站利用cookie有限制。个人电脑 cookies 设置(对 IE 浏览器而言)可通过菜单 “工具 --> Internet 选项 --> 隐私” 查看、修改。
文档 HTML 代码中的命令行,告诉浏览器设置某一名称或数值的 cookie。以下是用来设置 cookie 脚本的一个普通实例。 - Set-Cookie: name = VALUE;
- expires = DATE;
- path = PATH;
- domain = DOMAIN_NAME;
复制代码
生存周期Cookie 可保持登录信息到用户下次与服务器的会话,换句话说,下次访问同一网站时,用户会发现不必输入用户名和密码就已经登录 (当然,不排除用户手工删除 Cookie)。而还有一些 Cookie,在用户退出会话时,就会被删除了,这样可有效保护个人隐私。
Cookie 在生成时,会被指定一个 Expire 值,这就是 Cookie 的生存周期,在这个周期内 Cookie 有效,超出周期 Cookie 就会被清除。有些页面将 Cookie 的生存周期设置为 “0” 或负值,这样在关闭浏览器时,会马上清除 Cookie,不会记录用户信息,更加安全。
启用/禁用 Cookie
01、微软 Internet Explorer
工具 --> Internet 选项 --> 隐私页 --> 调节滑块或点击 "高级",进行设置
02、Mozilla Firefox
工具 --> 选项 --> 隐私 --> 设置 Cookies 选项 --> 设定 "阻止/允许" 的各域内 Cookie --> 查看 Cookies 管理窗口,检查现存 Cookie 信息,选择删除或阻止它们
注:Linux 版本,编辑 --> 首选项 --> 隐私 , Mac 是:Firefox --> 属性 --> 隐私
03、苹果 Safari Safari --> 预置 --> 安全标签 --> 选择以下选项 --> 总是接受 Cookies--> 永不接受 Cookies --> 接受 Cookies 仅从您浏览的站点 (譬如:不接受来自其它站点的广告) 预设的选项。
您可显示所有驻留在您浏览器中的 cookies,也可随时将它们删除。
04、NETSCAPE
"PREFERENCE --> ADVANCED--> COOKIES",在出现的窗口中有三个选项,选择 “DISABLE COOKIES” 即可关闭 COOKIE。
在 IE 中,选择“查看 --> INTERNET 选项 --> 高级",在随后出现的窗口中找到 “COOKIES” 一项,选择 “禁止所有的 COOKIE 使用”,可关闭 COOKIE。
05、Konqueror
如没有设置 cookie 列表,请记住在域名前面加入 “.”,否则百度将不会读取 cookie (针对 KDE 3.3)。
如在一台计算机中安装多个浏览器,每个浏览器都会在各自独立空间中存放 cookie。因为 cookie 不但可确认用户,还能包含计算机、浏览器信息,所以,一个用户用不同的浏览器登录或用不同的计算机登录,都会得到不同的 cookie 信息,另一方面,对于在同一台计算机上使用同一浏览器的多用户群,cookie 不会区分他们的身份,除非他们使用不同的用户名登录。
工作原理
一般来说,Cookie 通过 HTTP Headers 从服务器端返回到浏览器上。
首先,服务器端在响应中利用 Set-Cookie header 来创建一个 Cookie ,然后,浏览器在它的请求中通过 Cookie header 包含这个已创建的 Cookie,并把它返回至服务器,从而完成浏览器的论证。譬如:我们创建了一个名字为 login 的 Cookie 来包含访问者的信息,创建 Cookie 时,服务器端的 Header 如下所示,这里假设访问者的注册名是 “Michael Jordan”,同时还对所创建的 Cookie 的属性如 pathdomain、expires 等进行了指定。
expires=Monday,01-Mar-99 00:00:01 GMT
上面这个 Header 会自动在浏览器端计算机的 Cookie 文件中添加一条记录。浏览器将变量名为 “login” 的 Cookie 赋值为 “Michael Jordon”。注意,在实际传递过程中这个 Cookie 的值是经过了 URLEncode 方法的 URL 编码操作的。这个含有 Cookie 值的 HTTP Header 被保存到浏览器的 Cookie 文件后,Header 会通知浏览器将 Cookie 通过请求以忽略路径的方式返回到服务器,完成浏览器的认证操作。
此外,我们使用 Cookie 的一些属性来限定该 Cookie 的使用。例如 Domain 属性能够在浏览器端对 Cookie 发送进行限定,具体到上面的例子,该 Cookie 只能传送到指定的服务器上,而决不会跑到其他的 Web 站点上去。Expires 属性则指定了该 Cookie 保存的时间期限,例如上面的 Cookie 在浏览器上只保存到 1999 年 3 月 1 日 1 秒。当然,如果浏览器上 Cookie 太多,超过了系统所允许的范围,浏览器将自动对它进行删除。至于属性 Path,用来指定 Cookie将被发送到服务器的哪一个目录路径下。
说明:浏览器创建了一个 Cookie 后,对于每一个针对该网站的请求,都会在 Header 中带着这个 Cookie;不过,对于其他网站的请求 Cookie 是绝对不会跟着发送的。而且浏览器会这样一直发送,直到 Cookie 过期为止。
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。
|