Cookie 是什么?

很多网站在你浏览网页之后,会在你的电脑系统中留下一些小小的档案,也就是所谓的 Cookie。当你再去浏览这些网站时,系统便会去读取这些 Cookie 再更新储存一遍。

Cookie 不是“饼干”,Cookie 是服务器暂存放在你电脑上的一笔资料,好让服务器用来辨认你的电脑。

为什么需要 Cookie?

HTTP 的协议本身是“无记忆状态 (Stateless) ”的,无论是用户端还是 Web 服务器,每一个页面都没有关联,每一次的请求都是单独的请求。服务器借由 Cookie 来让同一个用户的各项操作都可以产生关联。

当你在浏览网站的时候,服务器会先送一小小资料放在你的电脑上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie 里的内容来判断使用者,送出特定的网页内容给你。

Cookie 的使用很普遍,许多有提供个人化服务的网站,都是利用 Cookie 来辨认使用者,以方便送出使用者量身定做的内容,像是 Web 接口的免费 email 网站,都要用到 Cookie。

Cookie 会不会有危险?其实 Cookie 中记载的资料相有限,Cookie 是安全的。网站不可能经由 Cookie 获得你的 email 地址或是其他私人资料,更没有办法透过 Cookie 来存取底的电脑。

但是如果你实在不喜欢 Web 服务器乱丢饼干(Cookie)到你家,当然可以让浏览器拒绝网站存放 Cookie 到你的电脑。

IE 浏览器从“工具”选单 -> Intertnet 选项 -> 安全性,按“自订层级”,到 Cookie 的部分,全都设为关闭,按确定,关闭浏览器,再重新启动浏览器即可。

当你关闭 Cookie 之后,很多网站的个人化服务功能很可能也不能再使用了。

IE 的 Cookie 默认存放位置是在:C:\WINDOWS\Temporary Internet Files

你可以直接删掉这里面的东西或是利用“Internet 选项”里的清除档案按钮来清除。

Cookie 的内容

部份网友对 Cookie 的内容很有兴趣,想到这个问题,知不知道如何得知哪个网站有设 Cookie?你的 Cookie 资料又为何?其实,用非常简单的一行 JavaScript 指令就可以一清二楚了。

首先,开启一个网站,例如 http://www.google.com ,一旦网站开启后,在浏览器的位址列中输入以下的一行 JavaScript 指令:

javascript:alert("Cookie:"+document.cookie)

javascript:document.write(document.cookie)

按下 Enter 后,你会见到跳出一个小警告视窗,上面便会标明出你的 Cookie 资料。试试看吧?!当然,如果你的浏览器的 Cookie 功能被关闭,那你当然就见不到囉。

比较新的浏览器 Chrome 与 Firefox 都有内建“开发人员工具”,只要按 F12 开启“开发人员工具”,可以在“Application”或“储存空间”页签看到网站所储存的 Cookie 内容。

什么是 Session?

讲到 Cookie 就会有人提到 Session。Session 的资料是存放在 Web 服务器端。

用解释的不好解释,我们先来举个例子...

有一家咖啡店要举办咖啡买三送一的活动,若以“Cookie”或“Session”的作法来看:

  • Cookie: 相当于是店家发给你一张“小卡片”,每次你来买一杯咖啡就在卡片上盖个印章,集满三个印章,那咖啡店就会送你一杯免费的咖啡。
    其中,购买咖啡的记录是留在你携带的卡片上,如果卡片遗失你的记录就不存在了。
  • Session: 相当于是店家请你加入他们的会员,然后发给你一张“会员卡”(Session ID)。每次你拿会员卡来买咖啡都会在公司的电脑里留下记录,买了三杯咖啡就会送你一杯免费的咖啡。
    其中,购买咖啡的记录是储存在店家的电脑里,如果会员卡遗失了可以透过核对会员的资料来重新取得会员卡。未来这张会员卡甚至可能可以在它的连锁店使用。

Cookie 只做一件事,就是用来存取服务器暂存在客户端的资料。

Session 相较于 Cookie 是一个涵盖范围比较广、比较完整的保存机制。并且 Session 仍需借由 Cookie、网址或表单三种方式来识别用户的 Session ID 才能够接续之后服务器所要做的事情。

也可以说,只要有将任何与客户端有关的资料储存在服务器端,并且网站需要用 Cookie、网址或表单来识别单一用户,这样就已经算是在实做 Session 了。

  1. No comments yet.

  1. No trackbacks yet.

return top

%d 位部落客按了赞: